7.7 Барахлят регистры (и мои мозги)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем M a x i m, 26 авг 2011.

  1. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Добрый день

    соссно уже описал проблему - пытаемся провести заведомо имеющееся на с кладе количество единиц в реализацию - подтвержденное указанным отчетом и при подборе его видно в остатках - а декумент не проводится.

    Проверил товар на "владельцев" - все пусто. Да и никогда мы не использовали эту графу.

    Началось это не совсем сразу, но в тот же день (25.08.11), когда я заменил обработчик проведения созданного мною документа. До того документ работал почти месяц - таких чудес не происходило. Суть документа в том, чтобы менять продукцию (в нашем случае свжий хлеб на черствый). Так мы удерживаем наших покупателей.
    И всего-то хотелось запретиь проводить документ обмен, когда не хвататет для этого-то обмена продукции. А получилось как получилось.

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


    p.s. ПУБ 2.6 1с 7.7
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А у вас крыж автоочистки движений документа стоит?
  3. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    да, стоит.

    Первый вариант меня смущал (зачем нужно еще и в партийный учет соваться), но без этого почему-то не считало как надо. Второй мне виделся более серьезным (и без Регистров.Партии). Злая шутка, однако ж.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Без партий вы не получите себестоимость.
    Конфа какая - ПУБ?
  5. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    дык может из-за отсутствия обработки записи в регистры партий во втором варианте вся котовасия и началась?

    конфигурация - Хлебобулочное производство 1.2 (ПУБ 2.6)
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Очень на то похоже. Не знаком с данной переделкой ПУБа - нужно смотреть оригинальный код

    Партии исключать нельзя
  7. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    вот и я откуда-то помню, что партии обязательны. Хотя сбило меня то, что второй вариант был мной взят у документа ДвижениеМПЗ, где было ветвление от типа перемещения. Т.е. для типа "Перемещение между складами", то как раз этот заведомый кусок с записью только в Регистр.Склады (я лишь подретушировал под свои нужды). А если выбирался тип перемещения "между партиями", то код похож, но в финале запись делается таки в Партии.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Теперь где не проводится то?
  9. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Похоже, что начало проводится - вернулся к первому варианту обработки и перепровел все Обмены продукции. И ведь получилось. Не забуду ..... партию ).
    Спасибо за напоминание.
    Всю ночь сидел над этой бедой. Позавтракать в 6-45 домой ездил. А ларчик таков оказался.

    Теперь буду мозговать как сделать запрет на проведение Обмена продукции, когда ее у нас не хватает.
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Смущает что вы не указываете саму партию. Это вам чревато боком
  11. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    А то там указывать? Номер документа-родителя (т.е. Обмен продукции)?
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Смотри ту же отгрузку в качестве примера для определения партии товара
  13. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    гут, посмотрю
Похожие темы
  1. Coder1C
    Ответов:
    0
    Просмотров:
    1.888
  2. djyarilo
    Ответов:
    7
    Просмотров:
    784
Загрузка...

Поделиться этой страницей