Имя: Пароль:
1C
1С v8
v8: Создание док.опер(бух и налог) остатки
,
0 Sa6nek6
 
13.03.13
09:35
Подскажите почему нет записей в документе?? док создается


Процедура КнопкаВыполнитьНажатие(Кнопка)
Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать("C:\1.txt");
//создание документа
   Док             = Документы.ОперацияБух.СоздатьДокумент();
   Док.Дата        = Дат;
   Док.Организация = Организция;
   Док.Содержание  = "Ввод началных остатков по счету З73";
   РХоз   = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   РХоз.Отбор.Регистратор.Установить(Док.Ссылка);
   Рхоз.Записывать = Истина;


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

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


   КонецПроцедуры
1 salvator
 
13.03.13
09:35
Документ перед отбором регистратора надо записать
2 Sa6nek6
 
13.03.13
09:36
через отладчик смотрю, вставляет оба субконто но в доке не появляются записи(
3 salvator
 
13.03.13
09:37
Перед отбором регистра, т.е.
4 Sa6nek6
 
13.03.13
09:39
поставил толку нет(
5 salvator
 
13.03.13
09:42
Набор записей регистра кто будет записывать?
6 Sa6nek6
 
13.03.13
09:43
так  я записываю  сверху только
   РХоз=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   РХоз.Отбор.Регистратор.Установить(Док.Ссылка);
   Рхоз.Записывать = Истина;
7 salvator
 
13.03.13
09:45
КонецЕсли;
    Док.Записать(); // - убрать
КонецЦикла;    
//запись документа

   Док.Записать(); // - вместо этого написать РХоз.Записать();
8 Sa6nek6
 
13.03.13
09:46
неа(((
9 cw014
 
13.03.13
09:49
(8)

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   Текст = Новый ТекстовыйДокумент;
   Текст.Прочитать("C:\1.txt");

   Док             = Документы.ОперацияБух.СоздатьДокумент();
   Док.Дата        = Дат;
   Док.Организация = Организция;
   Док.Содержание  = "Ввод началных остатков по счету З73";
   Док.Записать();
   СсылкаНаДокумент = Док.Ссылка;

   РХоз   = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   РХоз.Отбор.Регистратор.Установить(Док.Ссылка);

   Для НомерСтроки = 1 по Текст.КоличествоСтрок() Цикл
       Стр             = Текст.ПолучитьСтроку(НомерСтроки);
       МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр,";");    
       Сотр   = МассивСтрок[0];
       Номен  = МассивСтрок[1];
       Деб    = МассивСтрок[2];
       Кред   = МассивСтрок[3];
   
       Если ЗначениеЗаполнено(Деб) Тогда
           Дебет = Число(Деб);
       КонецЕсли;
   
       Если ЗначениеЗаполнено(Кред) Тогда
           Кредет = Число(Кред);
       КонецЕсли;
   
       Сотруд = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Сотр));
       Номенклатура  = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Номен));

       //Дт

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

КонецПроцедуры
10 cw014
 
13.03.13
09:50
Если ЗначениеЗаполнено(Деб) Тогда
           Дебет = Число(Деб);
       КонецЕсли;
   
       Если ЗначениеЗаполнено(Кред) Тогда
           Кредет = Число(Кред);
       КонецЕсли;

Обрамляй в "Попытка..Исключение" иначе если там хлам - вылетит
11 cw014
 
13.03.13
09:51
ЗначениеЗаполнено(Кредет) И Кредет >0

заменяй на

Кредет > 0

(соответственно

ЗначениеЗаполнено(Дебет) И Дебет >0

в

Дебет >0
12 cw014
 
13.03.13
09:52
Сотруд = Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Сотр));
       Номенклатура  = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Номен));


Добавь проверку, что ссылки найдены, и в переменных не лежат пустые ссылки
13 cw014
 
13.03.13
09:56
Благодарность материальная приветствуется
14 Sa6nek6
 
13.03.13
09:58
Спасибо! Большое! будет возможность отблагодарю обязательно!
15 cw014
 
13.03.13
10:00
(14) Ну вон на телефон кинь 350 р - достаточно
16 Sa6nek6
 
13.03.13
10:24
за  строчку?
17 cw014
 
13.03.13
12:38
(16) За переписывание твоего модуля
18 aka AMIGO
 
13.03.13
12:40
а где, пардоньте, оператор
Проводка.Записать();
?
19 Starhan
 
13.03.13
12:49
(0) ОперацияБух документ не проводится в свойствах
По этому набор записей надо записывать руками.
20 cw014
 
13.03.13
15:41
(18) А это что такое за метод? К чему он привязан?
21 aka AMIGO
 
13.03.13
16:21
част работающего г-кода:
   ДокОперация = Документы.ОперацияБух.СоздатьДокумент(); //документ и шапка
   ДокОперация.Дата = ДатаДокумента;
   ДокОперация.Организация = ВыбОрганизация;
...
   ДокОперация.Записать();
   ДокОперацияСсылка = ДокОперация.Ссылка;

...

   //готовим регистры для записи
   РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
   РегХозрасчетный.Очистить();
   РегХозрасчетный.Записать(Истина); //все старые проводки очищены
...
   РегЗапись = РегХозрасчетный.Добавить(); 76.09
   РегЗапись.Период = ДатаДокумента;
   РегЗапись.Регистратор = ДокОперацияСсылка;
   РегЗапись.Организация = ВыбОрганизация;
   РегЗапись.СчетДт = СчетЭЛ;
   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Контрагенты", Стр.Контр);
   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Номенклатура", СПН.НайтиПоНаименованию("эл.энергия день"));
   РегЗапись.КоличествоДт = Коплате;
   РегЗапись.Сумма = Сум;

   СуммаДокумента = СуммаДокумента + Сум;
...
   РегХозрасчетный.Записать(Истина); //записаны проводки = запись регистра - то, что я не увидел в сабже
   ДокОперация.СуммаОперации = СуммаДокумента;
   ДокОперация.Записать(); //записан сам документ
Независимо от того, куда вы едете — это в гору и против ветра!