powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Отчет о розничных продажах
19 сообщений из 19, страница 1 из 1
Отчет о розничных продажах
    #36733581
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема состоит в следующем , у кассира(роли=Администратор ККМ,Пользователь) при попытке закрыть смену
выходит ошибка
Не удалось провести документ "Отчет о розничных продажах 00000000048 от 09.07.2010 20:53:22".
Печать Z-отчета
------------------- Смена закрыта ------------------

если выставляю Полные права выходит ошибка что нет данного товара на остатке
очень странно себя ведет
в общем склад стоит оптовый может проблема в этом?
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36733719
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверил склад тут роли не играет
проставляю полные права + администратор ККМ+оператор ККМ+кассир
выходит ошибка
Проведение документа: Отчет о розничных продажах 00000000054 от 10.07.2010 2:55:28 (ККМ)
Остатка по организации Аптека 24 часа товара "Но-шпа тб 40 мг № 20" недостаточно.
Не хватает 1 шт; Остаток 0 шт; Требуется 1 шт
Не удалось провести документ "Отчет о розничных продажах 00000000054 от 10.07.2010 2:55:28".
Печать Z-отчета
------------------- Смена закрыта ------------------

хотя он есть на остатке
и самое ужасное что удаляет чеки , не проведя отчет о розничных продажах
и товар висит в базе а в наличии нету
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36733801
по этой фирме и этим складом по этому товару и в это же время (с точностью до секунды) проводится?
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36733838
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А реализация,
что проводится?
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734540
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А реализация,
чеки проводятся
отчет о розничных продажах нет
даже если вручную создавать
или через закрытие кассовой смены все также
показывает сообщение которое выше
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734572
код проведения. Может ошибка в релизе?
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734615
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда смотри,
"Управление торговлей", редакция 10.3 (10.3.10.4)
Тогда смотрикод проведения
что это ,не понял?
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734620
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда смотри,
каким релизом пользуетесь ?
хочу проверить можеь на самом деле в нем проблема
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734645
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда смотри,
код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

	Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам;
	
	Если мУдалятьДвижения Тогда
		ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ);
	КонецЕсли;
	
	ПодготовитьСтруктуруШапкиДокумента(Заголовок, СтруктураШапкиДокумента);

	// Проверим правильность заполнения шапки документа
	ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок);

	// Проверим допустимость для пользователя цен документа
	УправлениеДопПравамиПользователей.ПроверитьДопустимостьЦенОтпуска(ЭтотОбъект, "Товары", Отказ);
	
	ПодготовитьТаблицыДокумента(СтруктураШапкиДокумента, ТаблицаПоТоварам);

	СтруктураПолей = Новый Структура;
	СтруктураПолей.Вставить("ВидОплаты", "ВидОплаты");
	СтруктураПолей.Вставить("ТипОплаты", "ВидОплаты.ТипОплаты");
	СтруктураПолей.Вставить("Сумма"    , "Сумма");

	ТаблицаПоПлатежнымКартам = ОбщегоНазначения.СформироватьЗапросПоТабличнойЧасти(ЭтотОбъект, "ОплатаПлатежнымиКартами", СтруктураПолей).Выгрузить();

	СтруктураПолей = Новый Структура;
	СтруктураПолей.Вставить("ВидОплаты"                          , "ВидОплаты");
	СтруктураПолей.Вставить("ТипОплаты"                          , "ВидОплаты.ТипОплаты");
	СтруктураПолей.Вставить("Сумма"                              , "Сумма");
	СтруктураПолей.Вставить("БанкКредитор"                       , "БанкКредитор");
	СтруктураПолей.Вставить("ДоговорВзаиморасчетовБанкаКредитора", "ДоговорВзаиморасчетовБанкаКредитора");
	СтруктураПолей.Вставить("Организация"                        , "ДоговорВзаиморасчетовБанкаКредитора.Организация");
	СтруктураПолей.Вставить("СуммаБанковскойКомиссии"            , "СуммаБанковскойКомиссии");

	ТаблицаПоБанковскимКредитам = ОбщегоНазначения.СформироватьЗапросПоТабличнойЧасти(ЭтотОбъект, "ОплатаБанковскимиКредитами", СтруктураПолей).Выгрузить();

	ЕстьБезналичныеРасчеты = ТаблицаПоПлатежнымКартам.Количество() >  0  ИЛИ ТаблицаПоБанковскимКредитам.Количество() >  0 ;
	Если ЕстьБезналичныеРасчеты Тогда
		СуммаПродажЗаНаличные = СуммаДокумента - ТаблицаПоПлатежнымКартам.Итог("Сумма") - ТаблицаПоБанковскимКредитам.Итог("Сумма");
		Если СуммаПродажЗаНаличные <  0  Тогда
			ОбщегоНазначения.СообщитьОбОшибке("Сумма оплаты платежными картами и банковскими кредитами больше общей суммы продаж по отчету!", Отказ, Заголовок);
		КонецЕсли;
	КонецЕсли;

	ТаблицаПоПродажамПоДисконтнымКартам = ПолучитьТаблицуПродажПоДисконтнымКартам(СтруктураШапкиДокумента);

	// Проверить заполнение ТЧ "Товары".
	ПроверитьЗаполнениеТабличнойЧастиТовары(ТаблицаПоТоварам, СтруктураШапкиДокумента, Отказ, Заголовок);

	// Проверить заполнение ТЧ "ОплатаПлатежнымиКартами".
	ПроверитьЗаполнениеТабличнойЧастиОплатаПлатежнымиКартами(ТаблицаПоПлатежнымКартам, СтруктураШапкиДокумента, Отказ, Заголовок);

	// Проверить заполнение ТЧ "ОплатаБанковскимиКредитами".
	ПроверитьЗаполнениеТабличнойЧастиОплатаБанковскимиКредитами(ТаблицаПоБанковскимКредитам, СтруктураШапкиДокумента, Отказ, Заголовок);

	// Проверить заполнение ТЧ "ПродажиПоДисконтнымКартам".
	ПроверитьЗаполнениеТабличнойЧастиПродажиПоДисконтнымКартам(ТаблицаПоПродажамПоДисконтнымКартам, СтруктураШапкиДокумента, Отказ, Заголовок);

	// Проверить заполнение ТЧ "Состав набора".
	СтруктураПолей = Новый Структура;
	СтруктураПолей.Вставить("Номенклатура");
	СтруктураПолей.Вставить("Количество");
	СтруктураПолей.Вставить("Цена");
	ЗаполнениеДокументов.ПроверитьЗаполнениеТабличнойЧасти(ЭтотОбъект, "СоставНабора", СтруктураПолей, Отказ, Заголовок);

	// Движения по документу
	Если Не Отказ Тогда

		// Подготовим таблицу товаров для проведения.
		ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТоварам, СтруктураШапкиДокумента);

		ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, 
			ТаблицаПоПлатежнымКартам, ТаблицаПоБанковскимКредитам, ТаблицаПоПродажамПоДисконтнымКартам, Отказ, Заголовок);
	КонецЕсли;

КонецПроцедуры // ОбработкаПроведения()



...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734656
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда смотри,
ДвиженияПоРегистрам
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Процедура ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, 
	                          ТаблицаПоПлатежнымКартам, ТаблицаПоБанковскимКредитам, ТаблицаПоПродажамПоДисконтнымКартам, Отказ, Заголовок);

	// По некоторым регистрам услуги проводить не нужно.
	// Подготовим отдельную таблицу.
	ТаблицаПоТоварамБезУслуг = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаПоТоварам,
	                           Новый Структура("Услуга", Ложь)).Выгрузить();

	//Получим таблицу по комплектам.
	ТаблицаПоКомплектам = УправлениеЗапасами.СформироватьТаблицуКомплектующих(ТаблицаПоТоварамБезУслуг, ЭтотОбъект);

	ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам,
	                       ТаблицаПоКомплектам , ТаблицаПоПлатежнымКартам, ТаблицаПоБанковскимКредитам, 
						   ТаблицаПоПродажамПоДисконтнымКартам, Отказ, Заголовок);
						   
	ДвиженияРегистраОперативныхРасчетов(РежимПроведения, СтруктураШапкиДокумента, Отказ, Заголовок);

	ДвиженияПоТоварамОрганизаций(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоКомплектам, Отказ, Заголовок);

	ДвиженияПоРегиструСписанныеТовары(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоКомплектам, Отказ, Заголовок);

	СтруктураТаблицыВыручки = Новый структура("НомерСтроки, Номенклатура, Услуга,, ВидЦенности, Ценность, Партия,
												  |СтавкаНДС, Сумма, СуммаВал, НДС, НДСВал, СуммаБезНДС, СуммаБезНДСВал,Комиссионный,Комитент,ДоговорКомиссии ,ВалютаРасчетовСКомитентом,СуммаСписания, Количество");
												  
	//Формируем таблицу выручки с нужной структурой и заполняем по таблице услуг
	ТаблицаВыручки = ОбщегоНазначения.СформироватьТаблицуЗначений(ТаблицаПоТоварам,СтруктураТаблицыВыручки,,Истина);
	ТаблицаВыручки.ЗаполнитьЗначения(Ложь, "Комиссионный");
	ТаблицаВыручки.ЗаполнитьЗначения( 0 ,    "Количество");
	
	ДвиженияРегистровПодсистемыНДС(СтруктураШапкиДокумента, ТаблицаВыручки, Отказ, Заголовок);

	// Зарегистрируем в последовательности УУ.
	Если ОтражатьВУправленческомУчете Тогда
		ЗаписьРегистрации = ПринадлежностьПоследовательностям.ПартионныйУчет.Добавить();
		ЗаписьРегистрации.Период      = Дата;
	КонецЕсли;

	УчетнаяПолитика = РегистрыСведений.УчетнаяПолитика.ПолучитьПоследнее(Дата);

	Если УчетнаяПолитика.СписыватьПартииПриПроведенииДокументов Тогда
		УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить());
	Иначе
		// В неоперативном режиме границы последовательностей сдвигаются назад, если они позже документа.
		Если РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда
			УправлениеЗапасамиПартионныйУчет.СдвигГраницыПоследовательностиПартионногоУчетаНазад(Дата, Ссылка, Организация);
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры // ДвиженияПоРегистрам()


ДвиженияРегистраОперативныхРасчетов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Процедура ДвиженияРегистраОперативныхРасчетов(РежимПроведения, СтруктураШапкиДокумента, Отказ, Заголовок)
	
	// По регистру ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов (взаиморасчеты с эквайрером).
	Если НЕ СтруктураШапкиДокумента.ВестиПоДокументамРасчетовСЭквайрером Тогда
		Возврат;
	КонецЕсли;

	СуммаВзаиморасчетов = ОплатаПлатежнымиКартами.Итог("Сумма");

	Если СуммаВзаиморасчетов <>  0  Тогда
		
		Движение = Движения.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Добавить();
		
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период      = Дата;
		
		Движение.ДоговорКонтрагента            = ДоговорВзаиморасчетовЭквайрера;
		Движение.Контрагент            		   = Эквайрер;
		Движение.Организация            	   = Организация;

		Движение.Сделка                        = Неопределено;
		Движение.ДокументРасчетовСКонтрагентом = Ссылка;
		Движение.ВидРасчетовСКонтрагентом      = Перечисления.ВидыРасчетовСКонтрагентами.ПоРеализации;
		Движение.УпрУчет                       = СтруктураШапкиДокумента.ОтражатьВУправленческомУчете;
		
		Движение.СуммаВзаиморасчетов = СуммаВзаиморасчетов;
		Движение.СуммаРегл           = СуммаВзаиморасчетов;
		
	КонецЕсли;
	
КонецПроцедуры


ДвиженияПоРегистрамУпр
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
Процедура ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам,
                                 ТаблицаПоТоварамБезУслуг, ТаблицаПоПлатежнымКартам, ТаблицаПоБанковскимКредитам, 
								 ТаблицаПоПродажамПоДисконтнымКартам, Отказ, Заголовок)

	Если Не ОтражатьВУправленческомУчете Тогда
		Возврат;
	КонецЕсли;

	ИтогСуммаПлатежныеКарты   = ТаблицаПоПлатежнымКартам.Итог("Сумма");
	ИтогСуммаБанковскийКредит = ТаблицаПоБанковскимКредитам.Итог("Сумма");
	Если СуммаДокумента - ИтогСуммаПлатежныеКарты - ИтогСуммаБанковскийКредит <>  0  Тогда
		// По регистру РозничнаяВыручка.
		НаборДвижений = Движения.РозничнаяВыручка;

		// Получим таблицу значений, совпадающую со структурой набора записей регистра.
		ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

		// Заполним таблицу движений.
		СтрокаДвижений = ТаблицаДвижений.Добавить();
		Если ВидОперации = Перечисления.ВидыОперацийОтчетОРозничныхПродажах.ОтчетККМОПродажах Тогда
			СтрокаДвижений.РозничнаяТочка = КассаККМ;
		Иначе
			СтрокаДвижений.РозничнаяТочка = Склад;
		КонецЕсли;
		СтрокаДвижений.Сумма              = СуммаДокумента - ИтогСуммаПлатежныеКарты - ИтогСуммаБанковскийКредит;
		СтрокаДвижений.Подразделение      = Подразделение;

		НаборДвижений.мПериод             = Дата;
		НаборДвижений.мТаблицаДвижений    = ТаблицаДвижений;

		Если Не Отказ Тогда
			Движения.РозничнаяВыручка.ВыполнитьПриход();
		КонецЕсли;
	КонецЕсли;
	// ТОВАРЫ ПО РЕГИСТРУ ТоварыНаСкладах или ТоварыВНТТ.

	ТаблицаНаСкладах = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаПоТоварамБезУслуг,
	                   Новый Структура("ВидСклада", Перечисления.ВидыСкладов.Оптовый)).Выгрузить();

	Если ТаблицаНаСкладах.Количество() >  0  Тогда
		НаборДвижений = Движения.ТоварыНаСкладах;

		// Получим таблицу значений, совпадающую со структурой набора записей регистра.
		ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

		// Заполним таблицу движений.
		ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаНаСкладах, ТаблицаДвижений);

		ТаблицаДвижений.ЗаполнитьЗначения(Справочники.Качество.Новый, "Качество");

		НаборДвижений.мПериод          = Дата;
		НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

		Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
			НаборДвижений.КонтрольОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок);
		КонецЕсли;

		Если Не Отказ Тогда
			НаборДвижений.ВыполнитьРасход();
		КонецЕсли;
	КонецЕсли;

	ТаблицаВРознице = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаПоТоварамБезУслуг,
	                  Новый Структура("ВидСклада", Перечисления.ВидыСкладов.Розничный)).Выгрузить();

	Если ТаблицаВРознице.Количество() >  0  Тогда
		НаборДвижений = Движения.ТоварыВРознице;

		// Получим таблицу значений, совпадающую со структурой набора записей регистра.
		ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

		ТаблицаВРознице.Колонки.Добавить("СуммаПродажная");

		ТаблицаПоЦенам = УправлениеРозничнойТорговлей.СформироватьЗапросПоПродажнымЦенам(Дата, ТаблицаВРознице.ВыгрузитьКолонку("Склад"),
		                 ТаблицаВРознице.ВыгрузитьКолонку("Номенклатура")).Выгрузить();

		УправлениеРозничнойТорговлей.ЗаполнитьКолонкуСуммаПродажная(ТаблицаВРознице, ТаблицаПоЦенам);

		// Заполним таблицу движений.
		ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаВРознице, ТаблицаДвижений);

		ТаблицаДвижений.ЗаполнитьЗначения(Справочники.Качество.Новый, "Качество");

		НаборДвижений.мПериод          = Дата;
		НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

		Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
			НаборДвижений.КонтрольОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок);
		КонецЕсли;

		Если Не Отказ Тогда
			НаборДвижений.ВыполнитьРасход();
		КонецЕсли;
	КонецЕсли;

	ТаблицаВНТТ = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаПоТоварамБезУслуг,
	              Новый Структура("ВидСклада", Перечисления.ВидыСкладов.НТТ)).Выгрузить();

	Если ТаблицаВНТТ.Количество() >  0  Тогда
		НаборДвижений = Движения.ТоварыВНТТ;

		// Получим таблицу значений, совпадающую со структурой набора записей регистра.
		ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

		// Заполним таблицу движений.
		ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаВНТТ, ТаблицаДвижений);

		// Недостающие поля.
		ТаблицаДвижений.ЗаполнитьЗначения(Перечисления.ТоварТара.Товар, "ТоварТара");

		НаборДвижений.мПериод          = Дата;
		НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

		// Проверка остатков при оперативном проведении.
		Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
			НаборДвижений.КонтрольОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок);
		КонецЕсли;

		Если Не Отказ Тогда
			НаборДвижений.ВыполнитьРасход();
		КонецЕсли;
	КонецЕсли;

	// ТОВАРЫ ПО РЕГИСТРУ Продажи.

	НаборДвижений   = Движения.Продажи;
	ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();
	ТаблицаПоТоварамПродажи = ТаблицаПоТоварам.Скопировать();
	ТаблицаПоТоварамПродажи.Колонки.НДС.Имя = "НДСРегл";
    ТаблицаПоТоварамПродажи.Колонки.НДСУпр.Имя = "НДС";

	Если СтруктураШапкиДокумента.ВедениеУчетаПоПроектам Тогда
		УправлениеПроектами.ОтразитьДвиженияПоПроектам(ТаблицаПоТоварамПродажи, ТаблицаДвижений, Проект, Дата, "Продажи");
	Иначе
		ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварамПродажи, ТаблицаДвижений);
	КонецЕсли;

	ТаблицаДвижений.ЗаполнитьЗначения(Ссылка       , "ДокументПродажи");
	ТаблицаДвижений.ЗаполнитьЗначения(Подразделение, "Подразделение");
	ТаблицаДвижений.ЗаполнитьЗначения(Организация  , "Организация");


	НаборДвижений.мПериод          = Дата;
	НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

	Если Не Отказ Тогда
		Движения.Продажи.ВыполнитьДвижения();
	КонецЕсли;

	// ПО РЕГИСТРУ ПродажиПоДисконтнымКартам.
	НаборДвижений = Движения.ПродажиПоДисконтнымКартам;

	ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

	// Заполним таблицу движений.
	ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоПродажамПоДисконтнымКартам, ТаблицаДвижений);

	НаборДвижений.мПериод          = Дата;
	НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

	Если Не Отказ Тогда
		НаборДвижений.ВыполнитьДвижения();
	КонецЕсли;

	// ТОВАРЫ ПО РЕГИСТРУ ПредоставленныеСкидки.

	НаборДвижений = Движения.ПредоставленныеСкидки;

	ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

	// Заполним таблицу движений.
	ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоСкидкам, ТаблицаДвижений);

	ТаблицаДвижений.ЗаполнитьЗначения(Ссылка, "ДокументСкидки");

	НаборДвижений.мПериод          = Дата;
	НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

	Если Не Отказ Тогда
		Движения.ПредоставленныеСкидки.ВыполнитьДвижения();
	КонецЕсли;

	// По регистрам взаиморасчетов отражаются безналичные расчеты
	
	Если ЕстьБезналичныеРасчеты Тогда
	
		НаборЗаписейВзаиморасчеты = Движения.ВзаиморасчетыСКонтрагентами;
		ТаблицаВзаиморасчеты      = НаборЗаписейВзаиморасчеты.ВыгрузитьКолонки();
		НаборЗаписейРасчеты       = Движения.РасчетыСКонтрагентами;
		ТаблицаРасчеты            = НаборЗаписейРасчеты.ВыгрузитьКолонки();
	
		// Взаиморасчеты с эквайрером
		
		СуммаВзаиморасчетовПоКартам = ТаблицаПоПлатежнымКартам.Итог("Сумма");
		
		Если СуммаВзаиморасчетовПоКартам <>  0  Тогда
			
			СуммаУпрПоКартам = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(
				СуммаВзаиморасчетовПоКартам, 
				мВалютаРегламентированногоУчета, СтруктураШапкиДокумента.ВалютаУправленческогоУчета,
				 1 , СтруктураШапкиДокумента.КурсВалютыУправленческогоУчета,	
				 1 , СтруктураШапкиДокумента.КратностьВалютыУправленческогоУчета);
			
			СтрокаВзаиморасчеты = ТаблицаВзаиморасчеты.Добавить();
			
			СтрокаВзаиморасчеты.ДоговорКонтрагента  = ДоговорВзаиморасчетовЭквайрера;
			СтрокаВзаиморасчеты.Контрагент          = Эквайрер;
			СтрокаВзаиморасчеты.Организация         = Организация;
			СтрокаВзаиморасчеты.Сделка              = Неопределено;
			СтрокаВзаиморасчеты.СуммаВзаиморасчетов = СуммаВзаиморасчетовПоКартам;
			СтрокаВзаиморасчеты.СуммаУпр            = СуммаУпрПоКартам;
			
			СтрокаРасчеты = ТаблицаРасчеты.Добавить();
			
			СтрокаРасчеты.ДоговорКонтрагента  = ДоговорВзаиморасчетовЭквайрера;
			СтрокаРасчеты.Контрагент  		  = Эквайрер;
			СтрокаРасчеты.Организация  	      = Организация;
			СтрокаРасчеты.Сделка              = Неопределено;
			СтрокаРасчеты.РасчетыВозврат      = Перечисления.РасчетыВозврат.Расчеты;
			СтрокаРасчеты.СуммаВзаиморасчетов = СуммаВзаиморасчетовПоКартам;
			СтрокаРасчеты.СуммаУпр            = СуммаУпрПоКартам;
			
		КонецЕсли;
		
		// Взаиморасчеты с банками по кредитам
		
		Для каждого СтрокаКредита Из ТаблицаПоБанковскимКредитам Цикл
		
			СуммаУпрПоКредиту = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(
				СтрокаКредита.Сумма, 
				мВалютаРегламентированногоУчета, СтруктураШапкиДокумента.ВалютаУправленческогоУчета,
				 1 , СтруктураШапкиДокумента.КурсВалютыУправленческогоУчета,	
				 1 , СтруктураШапкиДокумента.КратностьВалютыУправленческогоУчета);
			
			СтрокаВзаиморасчеты = ТаблицаВзаиморасчеты.Добавить();
			
			СтрокаВзаиморасчеты.ДоговорКонтрагента  = СтрокаКредита.ДоговорВзаиморасчетовБанкаКредитора;
			СтрокаВзаиморасчеты.Контрагент          = СтрокаКредита.БанкКредитор;
			СтрокаВзаиморасчеты.Организация         = Организация;
			СтрокаВзаиморасчеты.Сделка              = Неопределено;
			СтрокаВзаиморасчеты.СуммаВзаиморасчетов = СтрокаКредита.Сумма;
			СтрокаВзаиморасчеты.СуммаУпр            = СуммаУпрПоКредиту;
			
			СтрокаРасчеты = ТаблицаРасчеты.Добавить();
			
			СтрокаРасчеты.ДоговорКонтрагента  = СтрокаКредита.ДоговорВзаиморасчетовБанкаКредитора;
			СтрокаРасчеты.Контрагент  		  = СтрокаКредита.БанкКредитор;
			СтрокаРасчеты.Организация  	      = Организация;
			СтрокаРасчеты.Сделка              = Неопределено;
			СтрокаРасчеты.РасчетыВозврат      = Перечисления.РасчетыВозврат.Расчеты;
			СтрокаРасчеты.СуммаВзаиморасчетов = СтрокаКредита.Сумма;
			СтрокаРасчеты.СуммаУпр            = СуммаУпрПоКредиту;
			
		КонецЦикла;
			
		НаборЗаписейВзаиморасчеты.мПериод            = Дата;
		НаборЗаписейВзаиморасчеты.мТаблицаДвижений   = ТаблицаВзаиморасчеты;
			
		Если Не Отказ Тогда
			НаборЗаписейВзаиморасчеты.ВыполнитьПриход();
		КонецЕсли;
			
		НаборЗаписейРасчеты.мПериод            = Дата;
		НаборЗаписейРасчеты.мТаблицаДвижений   = ТаблицаРасчеты;
			
		Если Не Отказ Тогда
			НаборЗаписейРасчеты.ВыполнитьПриход();
		КонецЕсли;
		
	КонецЕсли;

КонецПроцедуры // ДвиженияПоРегистрамУпр()


ДвиженияПоТоварамОрганизаций
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Процедура ДвиженияПоТоварамОрганизаций(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварамБезУслуг, Отказ, Заголовок)

	Если НЕ СтруктураШапкиДокумента.ОтражатьВРегламентированномУчете 
	 Или Отказ Тогда
		Возврат;
	КонецЕсли;
	
	// ТОВАРЫ ПО РЕГИСТРУ ТоварыОрганизаций.

	НаборДвижений = Движения.ТоварыОрганизаций;

	// Получим таблицу значений, совпадающую со структурой набора записей регистра.
	ТаблицаДвижений = НаборДвижений.ВыгрузитьКолонки();

	// Заполним таблицу движений.
	ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварамБезУслуг, ТаблицаДвижений);

	// Недостающие поля.
	ТаблицаДвижений.ЗаполнитьЗначения(Организация, "Организация");
	ТаблицаДвижений.ЗаполнитьЗначения(Неопределено,"Комиссионер");
	ТаблицаДвижений.ЗаполнитьЗначения(Справочники.Качество.Новый, "Качество");

	Если Не СтруктураШапкиДокумента.ВестиУчетТоваровОрганизацийВРазрезеСкладов Тогда
		ТаблицаДвижений.ЗаполнитьЗначения(Неопределено, "Склад");
	КонецЕсли;
	
	НаборДвижений.мПериод          = Дата;
	НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

	// Проверка остатков при оперативном проведении.
	Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
		НаборДвижений.КонтрольОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок);
	КонецЕсли;

	Если Не Отказ Тогда
		Движения.ТоварыОрганизаций.ВыполнитьРасход();
	КонецЕсли;
	
КонецПроцедуры

...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734764
// Проверка остатков при оперативном проведении.
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
НаборДвижений.КонтрольОстатков(ЭтотОбъект, "Товары", СтруктураШапкиДокумента, Отказ, Заголовок);
КонецЕсли;


Идет контроль остаток и явно ругается. Заодно в отладчике проверь - по каким полям проверяет остатки.
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734838
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь покажи,
"Управление торговлей", редакция 10.3 (10.3.1.17)
проверил в данном релизе все нормально
Вот здесь покажиИдет контроль остаток и явно ругается. Заодно в отладчике проверь - по каким полям проверяет остатки.
щас проверю
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734846
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь покажи,
ОбработкаЧековККМ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
Процедура ОбработкаЧековККМ()

	Если КонецДня(Дата) = КонецДня(ТекущаяДата()) Тогда
		РежимПроведения = РежимПроведенияДокумента.Оперативный;
	Иначе
		РежимПроведения = РежимПроведенияДокумента.Неоперативный;
	КонецЕсли;

	МассивДокументовКПроведению = Новый Массив;

	ОтчетОРозничныхПродажах = СоздатьОтчетОРозничныхПродажах();
	СоответствиеТарифов = УправлениеРозничнойТорговлей.СформироватьСоответствиеТарифовЭквайринг(ОтчетОРозничныхПродажах.ДоговорЭквайринга);

	ОтчетОРозничныхПродажах.Склад = Справочники.Склады.ПустаяСсылка();

	ЗапросПоЧекам = Новый Запрос;
	ЗапросПоЧекам.УстановитьПараметр("НачДата" , НачалоДня(Дата));
	ЗапросПоЧекам.УстановитьПараметр("КонДата" , КонецДня(Дата));
	ЗапросПоЧекам.УстановитьПараметр("КассаККМ", КассаККМ);

	ЗапросПоЧекам.Текст ="
	|ВЫБРАТЬ
	|	Док.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.ЧекККМ КАК Док
	|ГДЕ
	|	Док.Дата МЕЖДУ &НачДата И &КонДата
	|	И Док.КассаККМ = &КассаККМ
	|	И Док.Проведен
	|ДЛЯ ИЗМЕНЕНИЯ Документ.ЧекККМ
	|";

	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("НачДата"           , НачалоДня(Дата));
	Запрос.УстановитьПараметр("КонДата"           , КонецДня(Дата));
	Запрос.УстановитьПараметр("КассаККМ"          , КассаККМ);
	Запрос.УстановитьПараметр("ВидОперацииПродажа", Перечисления.ВидыОперацийЧекККМ.Продажа);
	Запрос.Текст ="
	|ВЫБРАТЬ
	|	СУММА(	ВЫБОР	КОГДА ДокументЧекККМ.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|					ТОГДА 1
	|					ИНАЧЕ - 1
	|			КОНЕЦ)                                  КАК КоличествоСерийныхНоменров,
	|	ДокументЧекККМ.Склад                            КАК Склад,
	|	ЧекККМТовары.Номенклатура                        КАК Номенклатура,
	|	ЧекККМСерийныеНомера.СерийныйНомер              КАК СерийныйНомер,
	|	ЧекККМТовары.ХарактеристикаНоменклатуры          КАК ХарактеристикаНоменклатуры,
	|	ЧекККМТовары.СерияНоменклатуры                   КАК СерияНоменклатуры,
	|	ЧекККМТовары.ЕдиницаИзмерения                    КАК ЕдиницаИзмерения,
	|	ЧекККМТовары.Коэффициент                         КАК Коэффициент,
	|	ЧекККМТовары.Цена                                КАК Цена,
	|	ЧекККМТовары.ПроцентСкидкиНаценки                КАК ПроцентСкидкиНаценки,
	|	ЧекККМТовары.ПроцентАвтоматическихСкидок         КАК ПроцентАвтоматическихСкидок,
	|	ЧекККМТовары.УсловиеАвтоматическойСкидки         КАК УсловиеАвтоматическойСкидки,
	|	ЧекККМТовары.ЗначениеУсловияАвтоматическойСкидки КАК ЗначениеУсловияАвтоматическойСкидки
	|ИЗ
	|	Документ.ЧекККМ КАК ДокументЧекККМ
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	Документ.ЧекККМ.Товары КАК ЧекККМТовары
	|ПО
	|	ЧекККМТовары.Ссылка = ДокументЧекККМ.Ссылка
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	Справочник.Номенклатура КАК СправочникНоменклатура
	|ПО
	|	СправочникНоменклатура.Ссылка = ЧекККМТовары.Номенклатура
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	Документ.ЧекККМ.СерийныеНомера КАК ЧекККМСерийныеНомера
	|ПО
	|	ЧекККМСерийныеНомера.Ссылка = ДокументЧекККМ.Ссылка
	|	И ЧекККМСерийныеНомера.КлючСвязи = ЧекККМТовары.КлючСвязи
	|ГДЕ
	|	ДокументЧекККМ.Дата МЕЖДУ &НачДата И &КонДата
	|	И ДокументЧекККМ.Проведен
	|	И ДокументЧекККМ.КассаККМ = &КассаККМ
	|	И НЕ СправочникНоменклатура.Комплект
	|СГРУППИРОВАТЬ ПО
	|	ДокументЧекККМ.Склад,
	|	ЧекККМТовары.Номенклатура,
	|	ЧекККМСерийныеНомера.СерийныйНомер,
	|	ЧекККМТовары.ХарактеристикаНоменклатуры,
	|	ЧекККМТовары.СерияНоменклатуры,
	|	ЧекККМТовары.ЕдиницаИзмерения,
	|	ЧекККМТовары.Коэффициент,
	|	ЧекККМТовары.Цена,
	|	ЧекККМТовары.ПроцентСкидкиНаценки,
	|	ЧекККМТовары.ПроцентАвтоматическихСкидок,
	|	ЧекККМТовары.УсловиеАвтоматическойСкидки,
	|	ЧекККМТовары.ЗначениеУсловияАвтоматическойСкидки
	|ИМЕЮЩИЕ
	|		СУММА(	ВЫБОР	КОГДА ДокументЧекККМ.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|					ТОГДА 1
	|					ИНАЧЕ - 1
	|			КОНЕЦ) > 0
	|;
	|ВЫБРАТЬ
	|	ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)   КАК Документ,
	|	Комплект                                 КАК Комплект,
	|	Склад                                    КАК Склад,
	|	Номенклатура                             КАК Номенклатура,
	|	Количество                               КАК Количество,
	|	ХарактеристикаНоменклатуры               КАК ХарактеристикаНоменклатуры,
	|	СерияНоменклатуры                        КАК СерияНоменклатуры,
	|	ЕдиницаИзмерения                         КАК ЕдиницаИзмерения,
	|	Коэффициент                              КАК Коэффициент,
	|	Цена                                     КАК Цена,
	|	ПроцентСкидкиНаценки                     КАК ПроцентСкидкиНаценки,
	|	ПроцентАвтоматическихСкидок              КАК ПроцентАвтоматическихСкидок,
	|	УсловиеАвтоматическойСкидки              КАК УсловиеАвтоматическойСкидки,
	|	ЗначениеУсловияАвтоматическойСкидки      КАК ЗначениеУсловияАвтоматическойСкидки,
	|	Сумма                                    КАК Сумма,
	|	ПУСТАЯТАБЛИЦА.(КлючСтроки, КлючСвязи, Номенклатура, ХарактеристикаНоменклатуры, СерияНоменклатуры, ЕдиницаИзмерения, Количество, Цена) КАК СоставНабора,
	|	ПУСТАЯТАБЛИЦА.(КлючСвязи, СерийныйНомер) КАК СерийныеНомераСоставНабора,
	|	0 КАК КлючСтроки
	|ИЗ
	|(
	|ВЫБРАТЬ
	|	Док.Номенклатура.Комплект               КАК Комплект,
	|	Док.Ссылка.Склад                        КАК Склад,
	|	Док.Номенклатура                        КАК Номенклатура,
	|	СУММА(ВЫБОР
	|			КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
	|				ТОГДА Док.Количество
	|			ИНАЧЕ -Док.Количество
	|		КОНЕЦ)                              КАК Количество,
	|	Док.ХарактеристикаНоменклатуры          КАК ХарактеристикаНоменклатуры,
	|	Док.СерияНоменклатуры                   КАК СерияНоменклатуры,
	|	Док.ЕдиницаИзмерения                    КАК ЕдиницаИзмерения,
	|	Док.Коэффициент                         КАК Коэффициент,
	|	Док.Цена                                КАК Цена,
	|	Док.ПроцентСкидкиНаценки                КАК ПроцентСкидкиНаценки,
	|	Док.ПроцентАвтоматическихСкидок         КАК ПроцентАвтоматическихСкидок,
	|	Док.УсловиеАвтоматическойСкидки         КАК УсловиеАвтоматическойСкидки,
	|	Док.ЗначениеУсловияАвтоматическойСкидки КАК ЗначениеУсловияАвтоматическойСкидки,
	|	СУММА(ВЫБОР
	|			КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
	|				ТОГДА Док.Сумма
	|			ИНАЧЕ -Док.Сумма
	|		КОНЕЦ)                              КАК Сумма
	|ИЗ
	|	Документ.ЧекККМ.Товары КАК Док
	|ГДЕ
	|	Док.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
	|	И Док.Ссылка.КассаККМ = &КассаККМ
	|	И Док.Ссылка.Проведен
	|	И НЕ Док.Номенклатура.Комплект
	|СГРУППИРОВАТЬ ПО
	|	Док.Ссылка.Склад,
	|	Док.Номенклатура,
	|	Док.ХарактеристикаНоменклатуры,
	|	Док.СерияНоменклатуры,
	|	Док.ЕдиницаИзмерения,
	|	Док.Коэффициент,
	|	Док.Цена,
	|	Док.ПроцентСкидкиНаценки,
	|	Док.ПроцентАвтоматическихСкидок,
	|	Док.УсловиеАвтоматическойСкидки,
	|	Док.ЗначениеУсловияАвтоматическойСкидки
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР
	|			КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
	|				ТОГДА Док.Количество
	|			ИНАЧЕ -Док.Количество
	|		КОНЕЦ) <> 0) КАК ТоварыБезКомплектов
	|ОБЪЕДИНИТЬ ВСЕ
	|ВЫБРАТЬ
	|	Док.Ссылка                              КАК Документ,
	|	Док.Номенклатура.Комплект               КАК Комплект,
	|	Док.Ссылка.Склад                        КАК Склад,
	|	Док.Номенклатура                        КАК Номенклатура,
	|	ВЫБОР
	|			КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
	|				ТОГДА Док.Количество
	|			ИНАЧЕ -Док.Количество
	|		КОНЕЦ                               КАК Количество,
	|	Док.ХарактеристикаНоменклатуры          КАК ХарактеристикаНоменклатуры,
	|	Док.СерияНоменклатуры                   КАК СерияНоменклатуры,
	|	Док.ЕдиницаИзмерения                    КАК ЕдиницаИзмерения,
	|	Док.Коэффициент                         КАК Коэффициент,
	|	Док.Цена                                КАК Цена,
	|	Док.ПроцентСкидкиНаценки                КАК ПроцентСкидкиНаценки,
	|	Док.ПроцентАвтоматическихСкидок         КАК ПроцентАвтоматическихСкидок,
	|	Док.УсловиеАвтоматическойСкидки         КАК УсловиеАвтоматическойСкидки,
	|	Док.ЗначениеУсловияАвтоматическойСкидки КАК ЗначениеУсловияАвтоматическойСкидки,
	|	ВЫБОР
	|			КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа
	|				ТОГДА Док.Сумма
	|			ИНАЧЕ -Док.Сумма
	|		КОНЕЦ                               КАК Сумма,
	|	Док.Ссылка.СоставНабора.(КлючСтроки, КлючСвязи, Номенклатура, ХарактеристикаНоменклатуры, СерияНоменклатуры, ЕдиницаИзмерения, Количество, Цена) КАК СоставНабора,
	|	Док.Ссылка.СерийныеНомераСоставНабора.(КлючСвязи, СерийныйНомер) КАК СерийныеНомераСоставНабора,
	|	Док.КлючСтроки
	|ИЗ
	|	Документ.ЧекККМ.Товары КАК Док
	|ГДЕ
	|	Док.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
	|	И Док.Ссылка.КассаККМ = &КассаККМ
	|	И Док.Ссылка.Проведен
	|	И Док.Номенклатура.Комплект
	|	УПОРЯДОЧИТЬ ПО Склад
	|";

	ЗапросПоОплате = Новый Запрос("
	|ВЫБРАТЬ
	|	Док.Ссылка.Склад КАК Склад,
	|	Док.ВидОплаты.ТипОплаты КАК ТипОплаты,
	|	Док.ВидОплаты КАК ВидОплаты,
	|	СУММА(ВЫБОР КОГДА Док.Ссылка.ВидОперации = &ВидОперацииПродажа ТОГДА
	|		Док.Сумма
	|	ИНАЧЕ
	|		-Док.Сумма
	|	КОНЕЦ) КАК Сумма
	|ИЗ
	|	Документ.ЧекККМ.Оплата КАК Док
	|ГДЕ
	|	Док.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
	|	И Док.Ссылка.КассаККМ = &КассаККМ
	|	И Док.Ссылка.Проведен
	|	И Док.ВидОплаты.ТипОплаты <> &ТипОплатыНаличные
	|СГРУППИРОВАТЬ ПО
	|	Док.Ссылка.Склад,
	|	Док.Ссылка,
	|	Док.НомерСтроки,
	|	Док.ВидОплаты.ТипОплаты,
	|	Док.ВидОплаты
	|");

	ЗапросПоОплате.УстановитьПараметр("НачДата"           , НачалоДня(Дата));
	ЗапросПоОплате.УстановитьПараметр("КонДата"           , КонецДня(Дата));
	ЗапросПоОплате.УстановитьПараметр("КассаККМ"          , КассаККМ);
	ЗапросПоОплате.УстановитьПараметр("ВидОперацииПродажа", Перечисления.ВидыОперацийЧекККМ.Продажа);
	ЗапросПоОплате.УстановитьПараметр("ТипОплатыНаличные" , Перечисления.ТипыОплатЧекаККМ.Наличные);

	ЗапросПоДисконтнымКартам = Новый Запрос("
	|ВЫБРАТЬ
	|	Док.Склад КАК Склад,
	|	Док.ДисконтнаяКарта КАК ДисконтнаяКарта,
	|	Док.ВладелецДисконтнойКарты КАК ВладелецДисконтнойКарты,
	|	СУММА(ВЫБОР КОГДА Док.ВидОперации = &ВидОперацииПродажа ТОГДА
	|		Док.СуммаДокумента
	|	ИНАЧЕ
	|		-Док.СуммаДокумента
	|	КОНЕЦ) КАК Сумма
	|ИЗ
	|	Документ.ЧекККМ КАК Док
	|ГДЕ
	|	Док.Дата МЕЖДУ &НачДата И &КонДата
	|	И Док.КассаККМ = &КассаККМ
	|	И Док.ДисконтнаяКарта <> &ПустаяДисконтнаяКарта
	|	И Док.Проведен
	|СГРУППИРОВАТЬ ПО
	|	Док.Склад,
	|	Док.ДисконтнаяКарта,
	|	Док.ВладелецДисконтнойКарты
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР КОГДА Док.ВидОперации = &ВидОперацииПродажа ТОГДА
	|		Док.СуммаДокумента
	|	ИНАЧЕ
	|		-Док.СуммаДокумента
	|	КОНЕЦ) <> 0
	|");

	ЗапросПоДисконтнымКартам.УстановитьПараметр("НачДата"              , НачалоДня(Дата));
	ЗапросПоДисконтнымКартам.УстановитьПараметр("КонДата"              , КонецДня(Дата));
	ЗапросПоДисконтнымКартам.УстановитьПараметр("КассаККМ"             , КассаККМ);
	ЗапросПоДисконтнымКартам.УстановитьПараметр("ПустаяДисконтнаяКарта", Справочники.ИнформационныеКарты.ПустаяСсылка());
	ЗапросПоДисконтнымКартам.УстановитьПараметр("ВидОперацииПродажа"   , Перечисления.ВидыОперацийЧекККМ.Продажа);
	ЗапросПоДисконтнымКартам.УстановитьПараметр("ТипОплатыНаличные"    , Перечисления.ТипыОплатЧекаККМ.Наличные);

	ОтменитьТранзакцию = Ложь;
	НачатьТранзакцию();

	РезультатЗапросаПоЧекам = ЗапросПоЧекам.Выполнить();
	РезультатыЗапросов = Запрос.ВыполнитьПакет();
	РезультатЗапроса = РезультатыЗапросов[ 1 ];
	//РезультатыЗапросов массив из двух элементов
	//РезультатЗапроса[ 0 ] - все серийные номера на номенклатуру
	//РезультатЗапроса[ 1 ] - Основной запрос
	РезультатЗапросаПоОплате = ЗапросПоОплате.Выполнить();
	ТаблицаПоДисконтнымКартам = ЗапросПоДисконтнымКартам.Выполнить().Выгрузить();
	ТаблицаПоДисконтнымКартам.Индексы.Добавить("Склад");
	ТаблицаСерийныеНомераНоменклатуры = РезультатыЗапросов[ 0 ].Выгрузить();

	ТаблицаОплатПлатежныеКарты = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(РезультатЗапросаПоОплате,
	   Новый Структура("ТипОплаты", Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта)).Выгрузить();
	ТаблицаОплатПлатежныеКарты.Индексы.Добавить("Склад");

	ТаблицаОплатБанковскиеКредиты = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(РезультатЗапросаПоОплате,
	   Новый Структура("ТипОплаты", Перечисления.ТипыОплатЧекаККМ.БанковскийКредит)).Выгрузить();
	ТаблицаОплатБанковскиеКредиты.Индексы.Добавить("Склад");

	ТаблицаСерийныеНомераКомплект              = Неопределено;     // Таблица в которую будут выгружены серийные номера на комплектующие набора-комплекта
	СтруктураПоискаСерийногоНомера             = Новый Структура();// Набор полей для поиска серийного номера на комплектующее набора-комплекта
	СтруктураПоискаСерийногоНомераНоменклатура = Новый Структура();// Набор полей для поиска серийного номера на номенклатуру
	СтруктураПоляЗаполнения                    = Новый Структура();// Содержит поля которые нужно обновить в документе "Отчет о розничных продажах"
	//СтруктураПоляЗаполнения содержит поля которые нужно обновить.
	//Ключ структуры содержит имя поля
	//Значение структуры = "Истина" поле участвует в отборе по таблице с серийными номерами
	//                   = "Ложь" поле не участвует в отборе по таблице с серийными номерами
	СтруктураПоляЗаполнения.Вставить("Склад"                              , Истина);
	СтруктураПоляЗаполнения.Вставить("Номенклатура"                       , Истина);
	СтруктураПоляЗаполнения.Вставить("ЕдиницаИзмерения"                   , Истина);
	СтруктураПоляЗаполнения.Вставить("Коэффициент"                        , Истина);
	СтруктураПоляЗаполнения.Вставить("ХарактеристикаНоменклатуры"         , Истина);
	СтруктураПоляЗаполнения.Вставить("СерияНоменклатуры"                  , Истина);
	СтруктураПоляЗаполнения.Вставить("Количество"                         , Ложь);
	СтруктураПоляЗаполнения.Вставить("Цена"                               , Истина);
	СтруктураПоляЗаполнения.Вставить("ПроцентСкидкиНаценки"               , Истина);
	СтруктураПоляЗаполнения.Вставить("ПроцентАвтоматическихСкидок"        , Истина);
	СтруктураПоляЗаполнения.Вставить("УсловиеАвтоматическойСкидки"        , Истина);
	СтруктураПоляЗаполнения.Вставить("ЗначениеУсловияАвтоматическойСкидки", Истина);
	СтруктураПоляЗаполнения.Вставить("Сумма"                              , Ложь);
	СтрокаПолейИндекса = "";
	Для Каждого ИмяПоля Из СтруктураПоляЗаполнения Цикл
		Если ИмяПоля.Значение Тогда
			СтрокаПолейИндекса = СтрокаПолейИндекса + ИмяПоля.Ключ + ",";
		КонецЕсли;
	КонецЦикла;
	ТаблицаСерийныеНомераНоменклатуры.Индексы.Добавить(Сред(СтрокаПолейИндекса,  0 ,СтрДлина(СтрокаПолейИндекса) -  1 ));

	ПараметрыСвязиСтрокТЧ = Новый Соответствие;
	ПараметрыСвязиСтрокТЧ.Вставить("Товары", Новый Структура("СвободныйКлюч, ФлагМодификации", Неопределено, Ложь));
	ПараметрыСвязиСтрокТЧ.Вставить("СоставНабора", Новый Структура("СвободныйКлюч, ФлагМодификации", Неопределено, Ложь));
	ДокументЧекККМ = Неопределено;

	Если РезультатЗапроса.Пустой() Тогда
		ТекстСообщения = "За кассовую смену не продано ни одного товара по выбранной кассе ККМ.";
		ОбщегоНазначения.СообщитьОбОшибке(ТекстСообщения);
		ОтменитьТранзакцию = Истина;
	Иначе
		Выборка = РезультатЗапроса.Выбрать();
		Пока Выборка.Следующий() Цикл
			Если Выборка.Комплект И НЕ Выборка.Документ = ДокументЧекККМ Тогда
				ДокументЧекККМ = Выборка.Документ;
				ТаблицаСерийныеНомераКомплект = Выборка.СерийныеНомераСоставНабора.Выгрузить();
				ТаблицаСерийныеНомераКомплект.Индексы.Добавить("КлючСвязи");
			КонецЕсли;
			Если Не мСкладыВТабличнойЧасти Тогда
				Если НЕ ЗначениеЗаполнено(ОтчетОРозничныхПродажах.Склад) Тогда
					ОтчетОРозничныхПродажах.Склад = Выборка.Склад;
				Иначе
					Если ОтчетОРозничныхПродажах.Склад <> Выборка.Склад Тогда // надо создавать новый документ
						Если Не ОтменитьТранзакцию Тогда
							СтруктураПоиска = Новый Структура;
							СтруктураПоиска.Вставить("Склад", ОтчетОРозничныхПродажах.Склад);

							МассивОплат = ТаблицаОплатПлатежныеКарты.НайтиСтроки(СтруктураПоиска);
							Для Каждого Оплата Из МассивОплат Цикл
								НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Добавить();
								НоваяСтрока.ВидОплаты = Оплата.ВидОплаты;
								НоваяСтрока.Сумма = Оплата.Сумма;
								НоваяСтрока.ПроцентТорговойУступки = СоответствиеТарифов[НоваяСтрока.ВидОплаты];
								ОтчетОРозничныхПродажах.ПересчитатьТорговуюУступку(НоваяСтрока);

								ТаблицаОплатПлатежныеКарты.Удалить(Оплата);
							КонецЦикла;

							МассивОплат = ТаблицаОплатБанковскиеКредиты.НайтиСтроки(СтруктураПоиска);
							Для Каждого Оплата Из МассивОплат Цикл
								НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаБанковскимиКредитами.Добавить();
								НоваяСтрока.ВидОплаты = Оплата.ВидОплаты;
								НоваяСтрока.Сумма = Оплата.Сумма;
								ОтчетОРозничныхПродажах.ПриИзмененииВидаОплатыБанковскимКредитом(НоваяСтрока);

								ТаблицаОплатБанковскиеКредиты.Удалить(Оплата);
							КонецЦикла;

							МассивДисконтныхКарт = ТаблицаПоДисконтнымКартам.НайтиСтроки(СтруктураПоиска);
							Для Каждого ПродажаПоДисконтнойКарте Из МассивДисконтныхКарт Цикл
								НоваяСтрока = ОтчетОРозничныхПродажах.ПродажиПоДисконтнымКартам.Добавить();
								НоваяСтрока.ДисконтнаяКарта = ПродажаПоДисконтнойКарте.ДисконтнаяКарта;
								НоваяСтрока.ВладелецДисконтнойКарты = ПродажаПоДисконтнойКарте.ВладелецДисконтнойКарты;
								НоваяСтрока.Сумма = ПродажаПоДисконтнойКарте.Сумма;

								ТаблицаПоДисконтнымКартам.Удалить(ПродажаПоДисконтнойКарте);
							КонецЦикла;

							Если ЗаписатьОтчетОРозничныхПродажах(ОтчетОРозничныхПродажах) Тогда
								МассивДокументовКПроведению.Добавить(ОтчетОРозничныхПродажах);
							Иначе
								ОтменитьТранзакцию = Истина;
								Прервать;
							КонецЕсли;
						КонецЕсли;

						ОтчетОРозничныхПродажах = СоздатьОтчетОРозничныхПродажах();
						СоответствиеТарифов = УправлениеРозничнойТорговлей.СформироватьСоответствиеТарифовЭквайринг(ОтчетОРозничныхПродажах.ДоговорЭквайринга);

						ОтчетОРозничныхПродажах.Склад = Выборка.Склад;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;

			СтрокаТабличнойЧасти = ОтчетОРозничныхПродажах.Товары.Добавить();

			Если Выборка.Комплект Тогда
				СтрокаТабличнойЧасти.КлючСтроки = УправлениеЗапасами.ПолучитьНовыйКлючСтроки(ОтчетОРозничныхПродажах);
				ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, Выборка,
				"Номенклатура, ЕдиницаИзмерения, Коэффициент, ХарактеристикаНоменклатуры, СерияНоменклатуры, Количество, Цена, ПроцентСкидкиНаценки, ПроцентАвтоматическихСкидок, УсловиеАвтоматическойСкидки, ЗначениеУсловияАвтоматическойСкидки, Сумма");
				ВыборкаКомплектующих = Выборка.СоставНабора.Выбрать();
				Пока ВыборкаКомплектующих.Следующий() Цикл
					Если ВыборкаКомплектующих.КлючСтроки = Выборка.КлючСтроки Тогда
						СтрокаСоставаНабора = ОтчетОРозничныхПродажах.СоставНабора.Добавить();
						ЗаполнитьЗначенияСвойств(СтрокаСоставаНабора, ВыборкаКомплектующих,
						"Номенклатура, ЕдиницаИзмерения, ХарактеристикаНоменклатуры, СерияНоменклатуры, Количество, Цена");
						СтрокаСоставаНабора.КлючСтроки = СтрокаТабличнойЧасти.КлючСтроки;
						Если НЕ ВыборкаКомплектующих.КлючСвязи =  0  Тогда
							СтруктураПоискаСерийногоНомера.Вставить("КлючСвязи", ВыборкаКомплектующих.КлючСвязи);
							массивСтрок = ТаблицаСерийныеНомераКомплект.НайтиСтроки(СтруктураПоискаСерийногоНомера);
							КлючСвязи = УчетСерийныхНомеров.ПолучитьНовыйКлючСвязи(ПараметрыСвязиСтрокТЧ, ОтчетОРозничныхПродажах, "СоставНабора", Истина);
							СтрокаСоставаНабора.КлючСвязи      = КлючСвязи;
							Для Каждого СтрокаСерийногоНомераЧекККМ Из массивСтрок Цикл
								СтрокаСерийногоНомера               = ОтчетОРозничныхПродажах.СерийныеНомераСоставНабора.Добавить();
								СтрокаСерийногоНомера.СерийныйНомер = СтрокаСерийногоНомераЧекККМ.СерийныйНомер;
								СтрокаСерийногоНомера.КлючСвязи     = КлючСвязи;
							КонецЦикла;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
			Иначе
				Для Каждого ПолеЗаполнения Из СтруктураПоляЗаполнения Цикл
					СтрокаТабличнойЧасти[ПолеЗаполнения.Ключ] = Выборка[ПолеЗаполнения.Ключ];
					Если ПолеЗаполнения.Значение Тогда
						СтруктураПоискаСерийногоНомераНоменклатура.Вставить(ПолеЗаполнения.Ключ, Выборка[ПолеЗаполнения.Ключ]);
					КонецЕсли;
				КонецЦикла;
				массивСтрок = ТаблицаСерийныеНомераНоменклатуры.НайтиСтроки(СтруктураПоискаСерийногоНомераНоменклатура);
				Если массивСтрок.Количество() >  0  Тогда
					КлючСвязи = УчетСерийныхНомеров.ПолучитьНовыйКлючСвязи(ПараметрыСвязиСтрокТЧ, ОтчетОРозничныхПродажах, "Товары", Истина);
					СтрокаТабличнойЧасти.КлючСвязи      = КлючСвязи;
					Для Каждого СтрокаСерийногоНомераЧекККМ Из массивСтрок Цикл
						Для х =  1  По СтрокаСерийногоНомераЧекККМ.КоличествоСерийныхНоменров Цикл
							СтрокаСерийногоНомера               = ОтчетОРозничныхПродажах.СерийныеНомера.Добавить();
							СтрокаСерийногоНомера.СерийныйНомер = СтрокаСерийногоНомераЧекККМ.СерийныйНомер;
							СтрокаСерийногоНомера.КлючСвязи     = КлючСвязи;
						КонецЦикла;
					КонецЦикла;
				КонецЕсли;
			КонецЕсли;

			Если мСкладыВТабличнойЧасти Тогда
				СтрокаТабличнойЧасти.Склад = Выборка.Склад;
			КонецЕсли;
		КонецЦикла;

		// Удаляем чеки.
		Если Не ОтменитьТранзакцию Тогда
			Попытка
				УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь);
			Исключение
				ОтменитьТранзакцию = Истина;
				Предупреждение("Не удалось удалить чеки ККМ!");
			КонецПопытки;
		КонецЕсли;

		// Записываем ОтчетОРозничныхПродажах.
		Если Не ОтменитьТранзакцию И ОтчетОРозничныхПродажах.Товары.Количество() >  0  Тогда
			Для Каждого Оплата Из ТаблицаОплатПлатежныеКарты Цикл
				НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами.Добавить();
				НоваяСтрока.ВидОплаты = Оплата.ВидОплаты;
				НоваяСтрока.Сумма = Оплата.Сумма;
				НоваяСтрока.ПроцентТорговойУступки = СоответствиеТарифов[НоваяСтрока.ВидОплаты];
				ОтчетОРозничныхПродажах.ПересчитатьТорговуюУступку(НоваяСтрока);
			КонецЦикла;

			Для Каждого Оплата Из ТаблицаОплатБанковскиеКредиты Цикл
				НоваяСтрока = ОтчетОРозничныхПродажах.ОплатаБанковскимиКредитами.Добавить();
				НоваяСтрока.ВидОплаты = Оплата.ВидОплаты;
				НоваяСтрока.Сумма = Оплата.Сумма;
				ОтчетОРозничныхПродажах.ПриИзмененииВидаОплатыБанковскимКредитом(НоваяСтрока);
			КонецЦикла;

			Для Каждого ПродажаПоДисконтнойКарте Из ТаблицаПоДисконтнымКартам Цикл
				НоваяСтрока = ОтчетОРозничныхПродажах.ПродажиПоДисконтнымКартам.Добавить();
				НоваяСтрока.ДисконтнаяКарта = ПродажаПоДисконтнойКарте.ДисконтнаяКарта;
				НоваяСтрока.ВладелецДисконтнойКарты = ПродажаПоДисконтнойКарте.ВладелецДисконтнойКарты;
				НоваяСтрока.Сумма = ПродажаПоДисконтнойКарте.Сумма;
			КонецЦикла;

			Если ЗаписатьОтчетОРозничныхПродажах(ОтчетОРозничныхПродажах) Тогда
				МассивДокументовКПроведению.Добавить(ОтчетОРозничныхПродажах);
			Иначе
				ОтменитьТранзакцию = Истина;
			КонецЕсли;
		КонецЕсли;

		Если ОтменитьТранзакцию Тогда
			ОтменитьТранзакцию();
		Иначе
			ЗафиксироватьТранзакцию();
			Для Каждого ДокументКПроведению Из МассивДокументовКПроведению Цикл
				Попытка
					ДокументКПроведению.Записать(РежимЗаписиДокумента.Проведение, РежимПроведения);
				Исключение
ОШИБКА					ОбщегоНазначения.СообщитьОбОшибке("Не удалось провести документ """ + ДокументКПроведению + """.");
				КонецПопытки;

				ДокументКПроведению.ПолучитьФорму().Открыть();
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры // ОбработкаЧековККМ()



Ошибка на этой строке
Код: plaintext
1.
	ДокументКПроведению.Записать(РежимЗаписиДокумента.Проведение, РежимПроведения);
строка находится в самом низу процедуры
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734848
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь покажи,
это в модуле обработки Закрытия кассовой смены
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36734926
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заработало тему можно закрывать
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36735062
???
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36735073
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чем была проблема,
в чем проблема так и не выяснил,но релиз нормальный на чистую базу все работает нормально
была проблема пару дней назад файл базы данных полетел , вылечил с помощью chdbfl.exe
может причина в этом
а так решил выгрузить данные из старой базы и вогнать в пустую
выгружаю номенклатуру , в старой создаю инвентаризацию и установку цен номенклатуры и выгружаю в новую через обработку (файл приложен ниже) ,и на основе инвентаризации создаю приходную накладную
только вот проблема у меня остается в том, что цены пустые в приходной накладной ,
либо думаю выгрузить все приходы , но не хочется делать так , потому что не хочу выгружать все чеки
решил сделать так потому что магазин открыт недавно 2 месяца, а настроили там под оптовый склад
(ТОРГ-29 снять не получается, тяжело вести учет),плюс эта проблема , так что буду делать так
если есть советы буду признателен за помощь
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36735078
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чем была проблема,
а так очень странно продуманна обработка закрытия кассовой смены
проходит гашение кассы , удаляются чеки , а потом пытаются сохранить документ отчет о розничных продажах , в случае ошибки ничего хорошего не получается
...
Рейтинг: 0 / 0
Отчет о розничных продажах
    #36735082
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в чем была проблема,
Код: plaintext
1.
2.
3.
4.
5.
Если ОтменитьТранзакцию Тогда
			ОтменитьТранзакцию();
		Иначе
			ЗафиксироватьТранзакцию();
			Для Каждого ДокументКПроведению Из МассивДокументовКПроведению Цикл
насколько я понимаю на строке ЗафиксироватьТранзакцию(); транзакция закрывается или завершается (не знаю как правильно сказать), имеет смысл ее пустить ниже, по типу так, из тех соображений что чеки не будут удалятся и смена на кассе не будет закрываться(все или ничего)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Иначе
			
			Для Каждого ДокументКПроведению Из МассивДокументовКПроведению Цикл
				Попытка
					ДокументКПроведению.Записать(РежимЗаписиДокумента.Проведение, РежимПроведения);
ЗафиксироватьТранзакцию();
				Исключение
				ОбщегоНазначения.СообщитьОбОшибке("Не удалось провести документ """ + ДокументКПроведению + """.");
ОтменитьТранзакцию();
				КонецПопытки;

				ДокументКПроведению.ПолучитьФорму().Открыть();
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры // ОбработкаЧековККМ()
не разбераюсь , но мне кажется так правильней как то))
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Отчет о розничных продажах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]