7.7 Не выходит

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Archivar, 18 янв 2014.

  1. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    Модуль документа - поступлениеТМЦ
    Код:
    Процедура ОбработкаПроведения()
    если Контр.выбран()=0 Тогда
    Предупреждение("Не указан <Поставщик> проведение невозможно","!");
    СтатусВозврата(0); Возврат;
    КонецЕсли;
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    Ит=СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
    Ит.ВыполнитьЗапрос(,ДатаДок,"41",,,,,5);
    Ит.ВыбратьСубконто();
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    если Количество=0 Тогда
    Предупреждение("В строке №"+НомерСтроки+" количество равно 0","!");
    КонецЕсли;
    если ТМЦ.выбран()=0 Тогда
    Предупреждение("В строке №"+НомерСтроки+" не указан товар. Проведение невозможно","!");
    СтатусВозврата(0); Возврат;
    КонецЕсли;
    Если ТекущийДокумент().Проведен()=0 Тогда
    если Ит.ПолучитьСубконто(,,ТМЦ.ТекущийЭлемент())=1 Тогда
    Если (ТМЦ.Цена.Получить(ДатаДок)<>ЦенаПр)и(Ит.СКД("К")<>0) Тогда
    Спр.Новый(); Спр.Код=ТМЦ.Код; Спр.Наименование=ТМЦ.Наименование;
    сПР.Родитель=ТМЦ.Родитель; Спр.Записать(); ТМЦ=Спр.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Спр.Цена.Получить(ДатаДок)<>ЦенаПр Тогда
    Спр.Цена.Установить(ДатаДок,ЦенаПр);
    Спр.Записать();
    КонецЕсли;
    Проводка(Контекст,"41","60.1",Сумма,Количество,ТМЦ,,Контр,,"ТВ","Поступление товара");
    КонецЦикла;
    Если 0<Итог("НДС") Тогда
    Проводка(Контекст,"19.4","60.1",Итог("НДС"),,,,Контр,,"ТВ","НДС к возмещению");
    КонецЕсли;
    Проводка(Контекст,"МАГ","000",Итог("ВсегоПр"),,,,,,"ТВ","Сумма в магазин продажная");
    Операция.СуммаОперации=Итог("Всего");
    Операция.Содержание="Поступление товара";
    Операция.Записать();
    КонецПроцедуры   
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    реквизиты в справочник добавили?
  3. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    да - ОтКого, ПоЦене
  4. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    спр.ОтКого=ТМЦ.Контр; спр.ПоЦене=ТМЦ.Цена так?
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Контр<>Спр.ОтКого.Получить(ДатаДок) Тогда
    Спр.ОтКого.Установить(ДатаДок,Контр);
    Спр.Записать();
    КонецЕсли;
    //по ценам аналогично
    КонецЦикла;
  6. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если Контр<>ТМЦ.Контр.Получить(ДатаДок) Тогда
    Если Контр - это реквизит справочника уже?
  7. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    Вот что получилось:
    Код:
    Процедура ОбработкаПроведения()
    если Контр.выбран()=0 Тогда
    Предупреждение("Не указан <Поставщик> проведение невозможно","!");
    СтатусВозврата(0); Возврат;
    КонецЕсли;
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    Ит=СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
    Ит.ВыполнитьЗапрос(,ДатаДок,"41",,,,,5);
    Ит.ВыбратьСубконто();
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    
    если Количество=0 Тогда
    Предупреждение("В строке №"+НомерСтроки+" количество равно 0","!");
    КонецЕсли;
    если ТМЦ.выбран()=0 Тогда
    Предупреждение("В строке №"+НомерСтроки+" не указан товар. Проведение невозможно","!");
    СтатусВозврата(0); Возврат;
    КонецЕсли;
    Если ТекущийДокумент().Проведен()=0 Тогда
    если Ит.ПолучитьСубконто(,,ТМЦ.ТекущийЭлемент())=1 Тогда
    Если (ТМЦ.Цена.Получить(ДатаДок)<>ЦенаПр)и(Ит.СКД("К")<>0) Тогда
    Спр.Новый(); Спр.Код=ТМЦ.Код; Спр.Наименование=ТМЦ.Наименование;
    сПР.Родитель=ТМЦ.Родитель; Спр.Записать(); ТМЦ=Спр.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Спр.Цена.Получить(ДатаДок)<>ЦенаПр Тогда
    Спр.Цена.Установить(ДатаДок,ЦенаПр);
    Спр.Записать();
    КонецЕсли;
    Проводка(Контекст,"41","60.1",Сумма,Количество,ТМЦ,,Контр,,"ТВ","Поступление товара");
    КонецЦикла;
    
    
    Пока ПолучитьСтроку()=1 Цикл
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Контр<>Спр.ОтКого.Получить(ДатаДок) Тогда
    Спр.ОтКого.Установить(ДатаДок,Контр);
    Спр.Записать();
    КонецЕсли;
    Если Цена<>Спр.ПоЦене.Получить(ДатаДок) Тогда
    Спр.ПоЦене.Установить(ДатаДок,Контр);
    Спр.Записать();
    КонецЕсли;
    КонецЦикла;
    
    
    Если 0<Итог("НДС") Тогда
    Проводка(Контекст,"19.4","60.1",Итог("НДС"),,,,Контр,,"ТВ","НДС к возмещению");
    КонецЕсли;
    Проводка(Контекст,"МАГ","000",Итог("ВсегоПр"),,,,,,"ТВ","Сумма в магазин продажная");
    Операция.СуммаОперации=Итог("Всего");
    Операция.Содержание="Поступление товара";
    Операция.Записать();
    КонецПроцедуры  
    А после чтобы реквизиты заполнились, полный перерасчет БИ? или мб что еще?
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    а где ВыбратьСтроки? перед моим циклом?
  9. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВыбратьСтроки();
    оно должно стоять перед каждым циклом?
    я думал что одной достаточно, тогда :
    Код:
    Процедура ОбработкаПроведения()
    если Контр.выбран()=0 Тогда
    Предупреждение("Не указан <Поставщик> проведение невозможно","!");
    СтатусВозврата(0); Возврат;
    КонецЕсли;
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    Ит=СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
    Ит.ВыполнитьЗапрос(,ДатаДок,"41",,,,,5);
    Ит.ВыбратьСубконто();
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    
    если Количество=0 Тогда
    Предупреждение("В строке №"+НомерСтроки+" количество равно 0","!");
    КонецЕсли;
    если ТМЦ.выбран()=0 Тогда
    Предупреждение("В строке №"+НомерСтроки+" не указан товар. Проведение невозможно","!");
    СтатусВозврата(0); Возврат;
    КонецЕсли;
    Если ТекущийДокумент().Проведен()=0 Тогда
    если Ит.ПолучитьСубконто(,,ТМЦ.ТекущийЭлемент())=1 Тогда
    Если (ТМЦ.Цена.Получить(ДатаДок)<>ЦенаПр)и(Ит.СКД("К")<>0) Тогда
    Спр.Новый(); Спр.Код=ТМЦ.Код; Спр.Наименование=ТМЦ.Наименование;
    сПР.Родитель=ТМЦ.Родитель; Спр.Записать(); ТМЦ=Спр.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Спр.Цена.Получить(ДатаДок)<>ЦенаПр Тогда
    Спр.Цена.Установить(ДатаДок,ЦенаПр);
    Спр.Записать();
    КонецЕсли;
    Проводка(Контекст,"41","60.1",Сумма,Количество,ТМЦ,,Контр,,"ТВ","Поступление товара");
    КонецЦикла;
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Контр<>Спр.ОтКого.Получить(ДатаДок) Тогда
    Спр.ОтКого.Установить(ДатаДок,Контр);
    Спр.Записать();
    КонецЕсли;
    Если Цена<>Спр.ПоЦене.Получить(ДатаДок) Тогда
    Спр.ПоЦене.Установить(ДатаДок,Контр);
    Спр.Записать();
    КонецЕсли;
    КонецЦикла;
    
    
    Если 0<Итог("НДС") Тогда
    Проводка(Контекст,"19.4","60.1",Итог("НДС"),,,,Контр,,"ТВ","НДС к возмещению");
    КонецЕсли;
    Проводка(Контекст,"МАГ","000",Итог("ВсегоПр"),,,,,,"ТВ","Сумма в магазин продажная");
    Операция.СуммаОперации=Итог("Всего");
    Операция.Содержание="Поступление товара";
    Операция.Записать();
    КонецПроцедуры  
    
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    немного корявенько (запись справочника можно одну делать) Но в принципе так.
  11. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    Так?
    Код:
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Контр<>Спр.ОтКого.Получить(ДатаДок) Тогда
    Спр.ОтКого.Установить(ДатаДок,Контр);
    КонецЕсли;
    Если Цена<>Спр.ПоЦене.Получить(ДатаДок) Тогда
    Спр.ПоЦене.Установить(ДатаДок,Контр);
    КонецЕсли;	 
    Спр.Записать();
    КонецЦикла;
    или так?

    Код:
     ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    Если Контр<>Спр.ОтКого.Получить(ДатаДок) Тогда
    Спр.ОтКого.Установить(ДатаДок,Контр); 
    ИначеЕсли Цена<>Спр.ПоЦене.Получить(ДатаДок) Тогда
    Спр.ПоЦене.Установить(ДатаДок,Контр);
    Спр.Записать();
    КонецЕсли;
    КонецЦикла;
    
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ни та и ни этак... А вот так
    Код:
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.НайтиЭлемент(ТМЦ.ТекущийЭлемент());
    НадоЗаписать=0;
    Если Контр<>Спр.ОтКого.Получить(ДатаДок) Тогда
    Спр.ОтКого.Установить(ДатаДок,Контр);
    НадоЗаписать=1;
    КонецЕсли;
    Если Цена<>Спр.ПоЦене.Получить(ДатаДок) Тогда
    Спр.ПоЦене.Установить(ДатаДок,Контр);
    НадоЗаписать=1;
    КонецЕсли;	
    Если НадоЗаписать=1 Тогда
    Спр.Записать();
    КонецЕсли;
    КонецЦикла;
  13. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    А далее мне надо: полный пересчет БИ?
    чтобы значения вписались?
  14. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Монопольно: Меню-Операции-Проведение документов.
    В правом списке ставим галку на поступлении товаров, указываем период от рождества Христова по текущий день, жмакаем "Выполнить"
  15. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    пока считает) и я так понял считать она будет до второго пришествия)
    назрел вопрос: как дать права на реквизит в форме справочника? это программно или писать надо?
  16. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    На реквизит - только писать...
    а вы можете писать не программно? Или писать от слова пИсать???????????
  17. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    я имел ввиду - в 1ске стандартная функция мб есть. Потому как в конфиге во вкладке права - чисто по реквизиту я не нашел(
  18. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    потому что нету)))
    Права можно настроить на ОБЪЕКТ...

    Но это уже следующая песня о Маугли...
    После проведения, я так понимаю, нужно заняться отображением истории значений для бухов, доработкой отчетов, а уж ПОТОМ.... до реквизитов форм доберемся.
  19. TopicStarter Overlay
    Archivar
    Offline

    Archivar Опытный в 1С

    Регистрация:
    14 авг 2013
    Сообщения:
    319
    Симпатии:
    0
    Баллы:
    26
    все. закончилось)

    я историю значений открываю и вот: http://files.mail.ru/6D3619C9C3FD4514B7B81B23F6BBA8F3?t=1

    Так должно быть? выбор реквизитов?
  20. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нет конечно... Есть более удобная форма... Вы в отчет уже добавили цену/поставщика?

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