![]() |
![]() |
|
| ||
Deni1c 22.10.17 - 11:08 | Торговля ведется с одного рабочего места,к базе подключены две ккт с передачей данных, позиции в чеке подбираются от разных организаций, при пробитии необходимо чтобы товар пробивался на свою организацию
Реализовывал подобное в рознице 1.0 делал как описано тут v8: Два ФКР на одном рабочем месте кассира, как подобное реализовать в Бухгалтерии предприятия 3.0, может кто то делал что то подобное | ||
Deni1c 1 - 22.10.17 - 11:12 | Если Константы.ДваФР.Получить() Тогда
Запрос = Новый Запрос("
|ВЫБРАТЬ * ПОМЕСТИТЬ ТабТов ИЗ &ТабТов КАК ТТ;
|ВЫБРАТЬ *
|ИЗ
| ТабТов КАК Товары
|ГДЕ
| Товары.Номенклатура.ТоварОрганизации = &Организация");
Запрос.УстановитьПараметр("ТабТов", Товары.Выгрузить());
ВремДисконтнаяКарта = ДисконтнаяКарта;
Оплаты = Оплата.Выгрузить();
СписокОплат = Новый СписокЗначений;
ПервыйПроход = 1;
Организации = Справочники.Организации.Выбрать();
Пока Организации.Следующий() Цикл
Организация = Организации.Ссылка;
Если Организация = Магазин.ОсновнойСклад.Организация Тогда
Запрос.Текст = Запрос.Текст +" ИЛИ Товары.Номенклатура.ТоварОрганизации = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)";
КонецЕсли;
Запрос.УстановитьПараметр("Организация", Организация);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Товары.Загрузить(Результат.Выгрузить());
Оплата.Загрузить(Оплаты);
ИтогСуммы = Товары.Итог("Сумма");
ИтогОплат = Оплаты.Итог("Сумма");
Если ИтогСуммы <> ИтогОплат Тогда
Если Оплата.Количество() = 1 Тогда
ФормаОплат = Оплата.Получить(0);
ФормаОплат.Сумма = ИтогСуммы;
Иначе
Для Каждого ФормаОплат Из Оплата Цикл
Если ПервыйПроход Тогда
СуммаОплаты = ИтогСуммы * Окр(ФормаОплат.Сумма / ИтогОплат, 2);
СписокОплат.Добавить(ФормаОплат.Сумма - СуммаОплаты);
ФормаОплат.Сумма = СуммаОплаты;
Иначе
ФормаОплат.Сумма = СписокОплат.Получить(ФормаОплат.НомерСтроки - 1).Значение;
КонецЕсли;
КонецЦикла;
ПервыйПроход = 0;
КонецЕсли;
КонецЕсли;
ДисконтнаяКарта = ВремДисконтнаяКарта;
ФР = ПолучитьСерверТО().ПолучитьИдентификаторПоИдКассы(Организация);
КассаККМ = ПолучитьСерверТО().ПолучитьКассуККМ(ФР);
ПересчитатьАвтоматическиеСкидки();
ЗавершитьЗакрытиеЧека2(Печать, РучнойРежим, ВыбратьДокументПечати);
КонецЕсли;
КонецЦикла;
Иначе
ЗавершитьЗакрытиеЧека2(Печать, РучнойРежим, ВыбратьДокументПечати);
КонецЕсли;
Так реализованов рознице где подобное сделать в бп не пойму | ||
Deni1c 2 - 22.10.17 - 11:20 | Ткните пальце какую процедуру пилить в БП. Понятно что документ розничные продажи чек, модуль формы ФормаДокументаОбщая в какой процедуре допилить не мойму | ||
Deni1c 3 - 22.10.17 - 11:34 | Похоже никто не реализовывал подобное в бп, понятно что в рознице 2.0 это реализовано, но руководство хочет торговать именно из бп 3.0 от розницы 1.0 уходим хотя к ней допилил обработку с ккт работает | ||
2S 4 - 22.10.17 - 11:37 | (3) не делал, но просто рассуждения1. Разделение товара по секциям 2. в БП обслуживание ТО не через внешние обработки? | ||
Deni1c 5 - 22.10.17 - 11:41 | В БП 3.0 обслуживание ТО в конфиг зашито | ||
Deni1c 6 - 22.10.17 - 11:42 | Разделение по секциям это если один ккт подключен и бьем товар по секциям, а мне нужно товар пробивать на разные ккт из одного документа чек | ||
Deni1c 7 - 22.10.17 - 11:45 | В форме дописал табличную часть добавил реквизит ИндентификаторККТ, при подборе его заполняю, а вот как дальше пока загвоздка | ||
Deni1c 8 - 22.10.17 - 13:45 | Копал нашел Процедура ПринятьОплатуЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат <> Неопределено И ТипЗнч(Результат) = Тип("Структура") Тогда ПараметрыОповещения = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(Результат); ПараметрыОповещения.Вставить("СписокОборудования", ДополнительныеПараметры.СписокОборудованияПечатьЧека); Если Результат.ОплатаКарта <> 0 Тогда СписокВидовОплатПоОрганизации = ВидыОплатПлатежнойКартой(Объект.Организация); Если СписокВидовОплатПоОрганизации.Количество() = 1 Тогда ОплатаКартойЗавершение(СписокВидовОплатПоОрганизации[0], ПараметрыОповещения); Иначе ОтборВидыОплат = Новый Структура("Организация, ТипОплаты, ПометкаУдаления", Объект.Организация, ПредопределенноеЗначение("Перечисление.ТипыОплат.ПлатежнаяКарта"), Ложь); ЗаголовокФормыВыбора = НСтр("ru = 'Выберите вид оплаты'"); ОповещениеПриЗавершенииВыбора = Новый ОписаниеОповещения("ОплатаКартойЗавершение", ЭтотОбъект, ПараметрыОповещения); ПараметрыОткрытияФормы = Новый Структура("Отбор, Заголовок", ОтборВидыОплат, ЗаголовокФормыВыбора); ОткрытьФорму("Справочник.ВидыОплатОрганизаций.ФормаВыбора", ПараметрыОткрытияФормы, ЭтаФорма, УникальныйИдентификатор, , ,ОповещениеПриЗавершенииВыбора); КонецЕсли; Иначе НапечататьЧек(ПараметрыОповещения); КонецЕсли; КонецЕсли; КонецПроцедуры копать нужно тут | ||
h-sp 9 - 22.10.17 - 14:08 | (8) наверно в НапечататьЧек копать | ||
Deni1c 10 - 02.11.17 - 03:56 | Дописал протестил работает ниже код с дописками Обработка Подбор Номенклатуры 1. Процедура ОК(Команда) Отказ = НЕ ПроверитьЗаполнение();  //Денис+ В параметры добавил ККТОрганизации Если НЕ Отказ Тогда ПараметрЗакрытия = Новый Структура("Номенклатура, Количество, Цена, Валюта,ККТОрганизации"); ЗаполнитьЗначенияСвойств(ПараметрЗакрытия, ЭтотОбъект); Закрыть(ПараметрЗакрытия); КонецЕсли; КонецПроцедуры2. &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокСвойств = "Номенклатура, Количество, ЕдиницаИзмерения, Цена, Валюта,
|ЕстьКоличество, ЕстьЦена";
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, СписокСвойств);
Если НЕ ЕстьКоличество И НЕ ЕстьЦена Тогда
Отказ = Истина;
КонецЕсли;
СвойстваНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, "Наименование, ЕдиницаИзмерения");
Заголовок = СвойстваНоменклатуры.Наименование;
Если НЕ ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда
ЕдиницаИзмерения = СвойстваНоменклатуры.ЕдиницаИзмерения;
КонецЕсли;
Элементы.Количество.Видимость = ЕстьКоличество;
Элементы.ЕдиницаИзмерения.Видимость = ЕстьКоличество;
Элементы.Цена.Видимость = ЕстьЦена;
Элементы.ВалютаЦены.Видимость = ЕстьЦена;
Элементы.Сумма.Видимость = ЕстьЦена;
Элементы.ВалютаСуммы.Видимость = ЕстьЦена;
Сумма = Цена * Количество;
 //Денис+
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто3 КАК Склад,
| ХозрасчетныйОстатки.Субконто1 КАК Товар,
| ХозрасчетныйОстатки.КоличествоОстатокДт КАК Остаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет В ИЕРАРХИИ (&ВыбСчет), , Субконто1 = &Номенклатура) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто3,
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.КоличествоОстатокДт
|ИТОГИ ПО
| Склад" ;
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("Номенклатура",Номенклатура.Ссылка);
ТабВКоде = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой);
 //СоздатьТаблицуЗначенийВРеквизитеФормы(ЭтаФорма, "ТаблицаЗапросаТЗ", РезультатЗапроса);
 //ЗначениеВРеквизитФормы(РезультатЗапроса, "ТаблицаЗапросаТЗ");
ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит", "ТабНаФорме");
 //Денис-
КонецПроцедуры
//Денис+
3.
//Денис+
&НаСервере
&НаСервере
Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, ТабРеквизит, ТабНаФорме)
 // реквизит ТабРеквизит и соответствующий
 // ему элемент формы ТабНаФорме уже созданы
 // нами в визуальном режиме
 // 1. добавляем колонки из ТабВкоде в реквизит ТабРеквизит
НовыеРеквизиты = Новый Массив;
Для Каждого Колонка Из ТабВКоде.Колонки Цикл
НовыеРеквизиты.Добавить(
Новый РеквизитФормы(
Колонка.Имя, Колонка.ТипЗначения,
ТабРеквизит
)
);
КонецЦикла;
ИзменитьРеквизиты(НовыеРеквизиты);
 // 2. добавляем колонки из ТабВКоде в элемент ТабНаФорме
Для Каждого Колонка Из ТабВКоде.Колонки Цикл
НовыйЭлемент = Элементы.Добавить(
ТабРеквизит + "_" + Колонка.Имя, Тип("ПолеФормы"), Элементы[ТабНаФорме]
);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = ТабРеквизит + "." + Колонка.Имя;
КонецЦикла;
 // 3. наконец, передаём данные из ТабВКоде в ТабРеквизит
ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит);
 // готово!
КонецПроцедуры
Документ Розничная продажа (чек)
1.
&НаКлиенте Процедура НапечататьЧек(ПараметрыОплаты)  //Денис+ АдресХранилищаВидаОперации=ПолучитьВидОперацииЧека(); ВидОпер=ПолучитьИзВременногоХранилища(АдресХранилищаВидаОперации); Для Каждого Элемент Из ВидОпер Цикл КакаяОперация=Элемент.Значение; КонецЦикла; Если Объект.ВидОперации=КакаяОперация И Объект.Номер="" Тогда АдресХранилища=ПолучитьОрганизацииПробитияВозможногоЧека(); ОрганизацииПробитияВозможногоЧека= ПолучитьИзВременногоХранилища(АдресХранилища); ПервыйПроход = 1; Для Каждого Элемент Из ОрганизацииПробитияВозможногоЧека Цикл ОрганизацияДляВозможногоПробитияЧека=Элемент.Значение; АдресХранилищаСклада=ПолучитьСкладСписанияВозможногоЧека(Элемент.Значение); СкладСписанияВозможногоЧекаТЗ=ПолучитьИзВременногоХранилища(АдресХранилищаСклада); Для Каждого Элемент Из СкладСписанияВозможногоЧекаТЗ Цикл СкладСписанияВозможногоЧека=Элемент.Значение; КонецЦикла; ПолучитьТаблицуТоваровДляПечатиНаНесколькоОрганизаций(ОрганизацияДляВозможногоПробитияЧека, СкладСписанияВозможногоЧека,ПервыйПроход); ПервыйПроход=0; КонецЦикла; Объект.Товары.Очистить(); Объект.Оплата.Очистить();  //Теперь нужно пробить чеки которые записаны АдресХранилищаНепробитыхЧеков=ПолучитьДокументыЧекЗаписанныеНоНеПробитые(); ДокументыЧекЗаписанные=ПолучитьИзВременногоХранилища(АдресХранилищаНепробитыхЧеков); Для Каждого Элемент Из ДокументыЧекЗаписанные Цикл ПараметрыДляПробитияЧека= ПолучитьПараметрыПробиваемогоЧека(Элемент.Значение); ПараметрыОповещения = Новый Структура("ПараметрыОплаты , ПечататьТоварныйЧек, ОплатаКарта", ПараметрыОплаты , ПараметрыОплаты.ПечататьТоварныйЧек, ПараметрыОплаты.ОплатаКарта); Если ПараметрыОплаты.Свойство("ИдентификаторУстройстваЭТ") Тогда ПараметрыОповещения.Вставить("ИдентификаторУстройстваЭТ", ПараметрыОплаты.ИдентификаторУстройстваЭТ); КонецЕсли; ТипУстройства = ""; Если ЗначениеЗаполнено(ПараметрыДляПробитияЧека.УИНУстройства) Тогда ДанныеУстройства = МенеджерОборудованияКлиентПовтИсп.ПолучитьДанныеУстройства(ПараметрыДляПробитияЧека.УИНУстройства); ТипУстройства = ?(ДанныеУстройства.Свойство("ТипОборудованияИмя"), ДанныеУстройства.ТипОборудованияИмя, "ККТ"); КонецЕсли; ПараметрыОповещения.Вставить("ИдентификаторУстройства", ПараметрыДляПробитияЧека.УИНУстройства); ПараметрыОповещения.Вставить("ТипУстройства", ТипУстройства); Если ТипУстройства = "ККТ" Тогда ФормаПробиваемогоЧека=ПолучитьФорму("Документ.РозничнаяПродажа.Форма.ФормаДокументаОбщая"); ДанныеФормаПробиваемогоЧека= ФормаПробиваемогоЧека.Объект; ЗаполнитьНаСервереДанныеФормаПробиваемогоЧека(ДанныеФормаПробиваемогоЧека,Элемент.Значение); КопироватьДанныеФормы(ДанныеФормаПробиваемогоЧека, ФормаПробиваемогоЧека.Объект); ОповещениеПриЗавершении = Новый ОписаниеОповещения("ПолучитьПараметрыЗавершение",ФормаПробиваемогоЧека, ПараметрыОповещения); МенеджерОборудованияКлиент.НачатьПолучениеПараметровФискальногоУстройства(ОповещениеПриЗавершении, ПараметрыДляПробитияЧека.УИНДокумента , ПараметрыДляПробитияЧека.УИНУстройства, Ложь); Иначе ПолучитьПараметрыЗавершение(Неопределено, ПараметрыОповещения); КонецЕсли;  //Теперь нужно если чек пробился удалить временный документ  //определимся если документу присвоен НомерЧекККТ то удаляем временный документ Если ЗначениеЗаполнено(Объект.НомерЧекаККМ)=Истина Тогда УдалениеВременноСозданныхДокументовЧеки(Элемент.Значение); КонецЕсли; КонецЦикла; Иначе  //Денис- ПараметрыОповещения = Новый Структура("ПараметрыОплаты , ПечататьТоварныйЧек, ОплатаКарта", ПараметрыОплаты , ПараметрыОплаты.ПечататьТоварныйЧек, ПараметрыОплаты.ОплатаКарта); Если ПараметрыОплаты.Свойство("ИдентификаторУстройстваЭТ") Тогда ПараметрыОповещения.Вставить("ИдентификаторУстройстваЭТ", ПараметрыОплаты.ИдентификаторУстройстваЭТ); КонецЕсли; СписокОборудования = ПараметрыОплаты.СписокОборудования; Если СписокОборудования.Количество() = 1 Тогда ВыбратьУстройствоЗавершение(СписокОборудования[0], ПараметрыОповещения); ИначеЕсли СписокОборудования.Количество() > 0 Тогда ТипыОборудования = Новый Массив; ТипыОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ФискальныйРегистратор")); ТипыОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ПринтерЧеков")); ТипыОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ККТ")); МассивСкладов = Новый Массив; МассивСкладов.Добавить(ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка")); МассивСкладов.Добавить(Объект.Склад); СтруктураОтбора = Новый Структура("Организация, Склад, ТипОборудования, УстройствоИспользуется", Объект.Организация, МассивСкладов, ТипыОборудования, Истина); ПараметрыФормыВыбора = Новый Структура("Отбор, Заголовок", СтруктураОтбора, НСтр("ru='Выберите фискальный регистратор (принтер чеков)'", "ru") ); ОповещениеПриЗавершенииВыбора = Новый ОписаниеОповещения("ВыбратьУстройствоЗавершение", ЭтотОбъект, ПараметрыОповещения); ОткрытьФорму("Справочник.ПодключаемоеОборудование.Форма.ФормаВыбораИзСписка", ПараметрыФормыВыбора,ЭтаФорма,УникальныйИдентификатор,,,ОповещениеПриЗавершенииВыбора,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); Иначе ВыбратьУстройствоЗавершение(Неопределено, ПараметрыОповещения); КонецЕсли;  //Денис+ КонецЕсли;  //Денис- КонецПроцедуры 2. Добавлены следующие процедуры и функции //Денис+ &НаСервере Процедура УдалениеВременноСозданныхДокументовЧеки(СсылкаНадокумент) ДокументПробития=СсылкаНадокумент; ПолучаемДокументПробития= ДокументПробития.ПолучитьОбъект(); ПолучаемДокументПробития.УстановитьПометкуУдаления(Истина); ПолучаемДокументПробития.Удалить(); КонецПроцедуры &НаСервере
Процедура ЗаполнитьНаСервереДанныеФормаПробиваемогоЧека(ФормаДляЗаполнения,СсылкаНадокумент)
ДокументПробития=СсылкаНадокумент;
ПолучаемДокументПробития= ДокументПробития.ПолучитьОбъект();
ФормаДляЗаполнения.Организация=ПолучаемДокументПробития.Организация.Ссылка;
ФормаДляЗаполнения.Склад=ПолучаемДокументПробития.Склад.Ссылка;
ФормаДляЗаполнения.Товары.Загрузить(ПолучаемДокументПробития.Товары.Выгрузить());
ФормаДляЗаполнения.Оплата.Загрузить(ПолучаемДокументПробития.Оплата.Выгрузить());
КонецПроцедуры
&НаСервере
Функция ПолучитьПараметрыПробиваемогоЧека(СсылкаНадокумент)
ДокументПробития=СсылкаНадокумент;
ПолучаемДокументПробития= ДокументПробития.ПолучитьОбъект();
ПараметрыДляПробитияЧека=Новый Структура;
ПараметрыДляПробитияЧека.Вставить("УИНДокумента",ДокументПробития.УникальныйИдентификатор());
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ПодключаемоеОборудование.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
|ГДЕ
| ПодключаемоеОборудование.Организация.Ссылка = &Организация";
Запрос.Параметры.Вставить("Организация",ПолучаемДокументПробития.Организация.Ссылка);
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
УИНОборудования=Результат.Ссылка;
КонецЦикла;
ПараметрыДляПробитияЧека.Вставить("УИНУстройства",УИНОборудования);
ПараметрыДляПробитияЧека.Вставить("ОбъектПробития", ПолучаемДокументПробития.Ссылка);
Возврат ПараметрыДляПробитияЧека;
КонецФункции
&НаСервере
Функция ПолучитьДокументыЧекЗаписанныеНоНеПробитые()
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| РозничнаяПродажа.Ссылка КАК Ссылка
|ИЗ
| Документ.РозничнаяПродажа КАК РозничнаяПродажа
|ГДЕ
| РозничнаяПродажа.Проведен = ЛОЖЬ
| И РозничнаяПродажа.Дата МЕЖДУ &Датаначала И &ДатаОкончания
| И РозничнаяПродажа.ПометкаУдаления = ЛОЖЬ";
Запрос.Параметры.Вставить("Датаначала",НачалоДня(ТекущаяДата()));
Запрос.Параметры.Вставить("ДатаОкончания",КонецДня(ТекущаяДата()));
Результат=Запрос.Выполнить();
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));
//Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("ИдентификаторУстройства"));
АдресХранилищаНепробитыхЧеков =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор());
Возврат АдресХранилищаНепробитыхЧеков;
КонецФункции
&НаСервере
Функция ПолучитьВидОперацииЧека();
Результат=Перечисления.ВидыОперацийРозничнаяПродажа.Продажа;
Список = Новый СписокЗначений;
Список.Добавить(Результат);
АдресХранилищаВидОперации =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор());
Возврат АдресХранилищаВидОперации;
КонецФункции
&НаСервере
Функция ПолучитьСкладСписанияВозможногоЧека(Параметр);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ОборудованиеПоОрганизациям.Склад.Ссылка КАК СкладСсылка
|ИЗ
| РегистрСведений.ОборудованиеПоОрганизациям КАК ОборудованиеПоОрганизациям
|ГДЕ
| ОборудованиеПоОрганизациям.Организация.Ссылка = &Организация" ;
Запрос.Параметры.Вставить("Организация", Параметр);
Результат=Запрос.Выполнить();
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("СкладСсылка"));
АдресХранилищаСклада =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор());
Возврат АдресХранилищаСклада;
КонецФункции
&НаСервере
Функция ПолучитьОрганизацииПробитияВозможногоЧека();
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка
|ИЗ
| Справочник.Организации КАК Организации";
Результат = запрос.Выполнить();
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));
АдресХранилища =ПоместитьВоВременноеХранилище(Список,Новый УникальныйИдентификатор());
Возврат АдресХранилища;
КонецФункции
&НаСервере
Процедура ПолучитьТаблицуТоваровДляПечатиНаНесколькоОрганизаций(ВыбраннаяОрганизация, ВыбранныйСклад, НомерПрохода)
Запрос = Новый Запрос("
|ВЫБРАТЬ * ПОМЕСТИТЬ ТабТов ИЗ &ТабТов КАК ТТ;
|ВЫБРАТЬ *
|ИЗ
| ТабТов КАК Товары
|ГДЕ
| Товары.ККТОрганизации.Ссылка = &КассаОрг");
Запрос.УстановитьПараметр("ТабТов", Объект.Товары.Выгрузить());
Оплаты = Объект.Оплата.Выгрузить();
СписокОплат = Новый СписокЗначений;
Кассы = ВыбраннаяОрганизация;
Если Кассы =Справочники.Организации.ОрганизацияПоУмолчанию().Ссылка Тогда
Запрос.Текст = Запрос.Текст +" ИЛИ Товары.ККТОрганизации.Ссылка = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)";
КонецЕсли;
Запрос.УстановитьПараметр("КассаОрг", Кассы);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
НовыйДокумент = Документы.РозничнаяПродажа.СоздатьДокумент();
НовыйДокумент.Товары.Загрузить(Результат.Выгрузить());
НовыйДокумент.Оплата.Загрузить(Оплаты);
НовыйДокумент.Организация= ВыбраннаяОрганизация;
НовыйДокумент.Склад=ВыбранныйСклад;
 //Объект.Товары.Загрузить(Результат.Выгрузить());
 //Объект.Оплата.Загрузить(Оплаты);
ИтогСуммы = Объект.Товары.Итог("Сумма");
ИтогОплат = Объект.Оплата.Итог("Сумма");
Если ИтогСуммы <> ИтогОплат Тогда
Если Объект.Оплата.Количество() = 1 Тогда
ФормаОплат = Объект.Оплата.Получить(0);
ФормаОплат.Сумма = ИтогСуммы;
 // //Денис+
ФормаОплатНД=НовыйДокумент.Оплата.Получить(0);
ФормаОплатНД.Сумма= ИтогСуммы;
 // //Денис-
Иначе
Для Каждого ФормаОплат Из Объект.Оплата Цикл
Если НомерПрохода Тогда
СуммаОплаты = ИтогСуммы * Окр(ФормаОплат.Сумма / ИтогОплат, 2);
СписокОплат.Добавить(ФормаОплат.Сумма - СуммаОплаты);
ФормаОплат.Сумма = СуммаОплаты;
////Денис+
ФормаОплатНД.Сумма=СуммаОплаты;
////Денис-
Иначе
ФормаОплат.Сумма = СписокОплат.Получить(ФормаОплат.НомерСтроки - 1).Значение;
////Денис+
ФормаОплатНД.Сумма=СписокОплат.Получить(ФормаОплат.НомерСтроки - 1).Значение;
////Денис-
КонецЕсли;
КонецЦикла;
НомерПрохода = 0;
КонецЕсли;
КонецЕсли;
НовыйДокумент.Дата=ТекущаяДата();
НовыйДокумент.ВидОперации=Перечисления.ВидыОперацийРозничнаяПродажа.Продажа;
ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
НовыйДокумент.ВалютаДокумента= ВалютаРегламентированногоУчета;
НовыйДокумент.Записать();
 //НовыйДокумент.Ссылка
 // ДокуменЧекНапробитие= НовыйДокумент.Ссылка;
КонецЕсли;
//Ничего не меняем
КонецПроцедуры
//Денис- Рекламное место пустует | ||
Deni1c 11 - 02.11.17 - 04:03 | При подборе номеклатуры еще сделал вывод в табличную часть остатков в разрезе складов |
|
Список тем форума
|
Правила | Описание | Реклама на форуме | Волшебные решения | Поиск | Секции | Рейтинг | Книга знаний | Вики-миста (КЗ2) | Мобильная | Архив | Модераторы | Галерея | Регистрация | 18+ |