Запись Чек
Читают тему
Вход в личный кабинет
Для получения доступа к форуму необходимо
авторизоваться
или
зарегистрироваться
на сайте.
{{ formTitle ? formTitle : 'Заказ обратного звонка' }}
{{ formDescription }}
Сообщить об ошибке
ААА 18
Ошиблись со складом в документе Чек. Теперь при записи документа постоянно пишет
При записи < Чек 0000003250 от 28.11.2010 19:26:57 > обнаружены ошибки :
[ЦБ019139] Товар "Масло моторное 5/30 (бочка 205л) 93165007 DEXOS 2". Остаток 0 л. Списывается 1 л. Превышение 1 л
Из-за возникших ошибок операция записи была отменена.
При чем это даже при попытке записи непроведенного документа, а не только при попытке проведения!
При чем это даже при попытке записи непроведенного документа, а не только при попытке проведения!
Проверка остатков при записи документа "Чек" сделана для работы "Фронта кассира", т.к. сначала идет запись и проверка документа "Чек" без проведения, затем пробитие чека ФР, полученный номер чека передаем в документ "Чек" и проводим его. Если не сделать проверку, то получим пробитый чек, запись в фискальной памяти ФР и ошибку нехватки количества при проведении документа "Чек".
При этом если попробовать грубо (ДокументОбъект.ОбменДанными.Загрузка = Истина) вручную исправить склад на нужный, то документ после этого запишется и даже проведется.
А зачем отключать проверку если можно вручную изменить склад на нужный в табличной части "Товары"?
Посмотрите чему равно право "Контролировать заполнение только при проведении". Если оно установлено в ложь то проверки проходят как при записи документа так и при проведении. Установка режима загрузки отменяет все проверки, поэтому документ у вас записывается и проводится.
А зачем отключать проверку если можно вручную изменить склад на нужный в табличной части "Товары"?
Нет, не можно. У нас в документе стоит в шапке один склад, в табличной части - другой. Документ в таких условиях проводится. Но нам нужно в табличной части сделать тот же склад, что и в шапке. Вручную меняю склад в табличной части, после чего документ не то, что не проводится - даже просто не записывается, говорит, что превышение остатка (остаток естественно есть). Режимом загрузки меняю склад в табличной части. Затем отключаю режим загрузки и теперь документ можно провести (остаток, как я уже говорил выше, был).
Поэтому возможности исправить склад в табличной части нет.
2. Нужен скриншот типа Номенклатуры.
3. Была ли эта номенклатура зарезервирована под контрагента?
срабатывает именно ветка Запрос.УстановитьПараметр("Ссылка", Ссылка);, что влечет за собой проверку уже записанного, ошибочного документа базы, а не того, который мы видим на экране и где пытаемся изменить склад в табличной части. В дальнейшем смешение исходных и текущих данных приводит к ошибке отсутствия запчасти на складе.
Прикрепленные файлы
Ошибка зарегистрирована под номером С0104199.
текст функции в прикреплении.
В модуле обработки "фронт кассира" подправить функцию
ЗаписатьЧек()
Блок условия (он находится примерно с номера строки 6189)
// Выполняем проверку корректности заполнения документа
Если ПроверитьКорректность Тогда
ДокументОбъект.СообщениеОбОшибке="";
Если НЕ ДокументОбъект.ПроверитьКорректность(ДокументОбъект.СообщениеОбОшибке,, ИСТИНА, ИСТИНА) Тогда
СообщениеОбОшибке = ДокументОбъект.СообщениеОбОшибке;
ЗаписатьВФайлЛога("Записать чек", 1, "ОШИБКА ПРИ ЗАПИСИ ЧЕКА: "+СообщениеОбОшибке,,1);
Возврат ЛОЖЬ;
КонецЕсли;
КонецЕсли;
заменить на
// Выполняем проверку корректности заполнения документа
Если ПроверитьКорректность Тогда
ДокументОбъект.СообщениеОбОшибке="";
Если НЕ ДокументОбъект.ПроверитьКорректность(ДокументОбъект.СообщениеОбОшибке,, ИСТИНА, ИСТИНА, ИСТИНА) Тогда
СообщениеОбОшибке = ДокументОбъект.СообщениеОбОшибке;
ЗаписатьВФайлЛога("Записать чек", 1, "ОШИБКА ПРИ ЗАПИСИ ЧЕКА: "+СообщениеОбОшибке,,1);
Возврат ЛОЖЬ;
КонецЕсли;
КонецЕсли;
Прикрепленные файлы
// Выполняем проверку корректности заполнения документа
Если ПроверитьКорректность Тогда
ДокументОбъект.СообщениеОбОшибке="";
ЕстьОшибка = Ложь;
Если ХозОперация = Справочники.ХозОперации.Чек Тогда
Если НЕ ДокументОбъект.ПроверитьКорректность(ДокументОбъект.СообщениеОбОшибке,, ИСТИНА, ИСТИНА, ИСТИНА) Тогда
ЕстьОшибка = Истина;
КонецЕсли;
ИначеЕсли НЕ ДокументОбъект.ПроверитьКорректность(ДокументОбъект.СообщениеОбОшибке,, ИСТИНА, ИСТИНА) Тогда
ЕстьОшибка = Истина;
КонецЕсли;
Если ЕстьОшибка Тогда
СообщениеОбОшибке = ДокументОбъект.СообщениеОбОшибке;
ЗаписатьВФайлЛога("Записать чек", 1, "ОШИБКА ПРИ ЗАПИСИ ЧЕКА: "+СообщениеОбОшибке,,1);
Возврат ЛОЖЬ;
КонецЕсли;
КонецЕсли;