8.х Внешняя обработка для заноса данных из xls

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Vitalik85, 27 фев 2013.

  1. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Точнее это становится после того как я программно хочу это поле заполнить. Если не заполнять то это поле вручную доступно для редактирования.
  2. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    70-ый счет привязывается(расчеты с персоналом по оплате труда), а к нему сотрудник нет.
  3. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Код:
    ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("ФАМИЛИЯ ИМЯ ОТЧЕСТВ");
    ЗХозрасчетный.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, ФизЛицо);
    
    надо так.
    в субконто 70 счета идет не справочник СотрудникиОрганизаций, а ФизическиеЛица - нужно учитывать все начисления по человеку, а на одного человека могут быть несколько сотрудников (внутреннее совместительство)
  4. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Исправил, но все равно не работает.
    Код:
    Док = НовДок.Ссылка;
    НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗХозрасчетный.Отбор.Регистратор.Значение = Док;
    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = ТекущаяДата();
    ЗХозрасчетный.Организация = Справочники.Организации.НайтиПоКоду("000000001").Ссылка;
    ЗХозрасчетный.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
    ЗХозрасчетный.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
    НЗХозрасчетный.Записать();
    //ошибка
    ЗХозрасчетный.СубконтоКТ = Справочники.ФизическиеЛица.НайтиПоКоду("0000000003");
    
  5. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Код:
    Док = НовДок.Ссылка;
    // набор записей так
    НЗХозрасчетный = НовДок.Движения.Хозрасчетный;
    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = ТекущаяДата();
    ЗХозрасчетный.Организация = Справочники.Организации.НайтиПоКоду("000000001").Ссылка;
    ЗХозрасчетный.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
    ЗХозрасчетный.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
    
    //субконто вот так
    ЗХозрасчетный.СубконтоКТ.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, Справочники.ФизическиеЛица.НайтиПоКоду("0000000003"));
    
    НЗХозрасчетный.Записать();
  6. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Не получается заполнить аналогичное значение в налоговом учете:
    ЗНалоговый.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоНалоговыеУСН.РаботникиОрганизаций, Справочники.ФизическиеЛица.НайтиПоКоду("0000000001"));
    Что не так? Вроде все правильно...
  7. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    скорее всего не тот план видов характеристик используете. посмотрите в плане счетов Налоговый на закладке субконто какой у вас стоит.
    в УПП там ВидыСубконтоХозрасчетные - его и надо использовать
  8. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Код:
    ЗНалоговый.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций, Справочники.ФизическиеЛица.НайтиПоКоду("0000000001"));
    
    {Форма.Форма.Форма(62)}: Поле объекта не обнаружено (РаботникиОрганизаций)
    ЗНалоговый.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций, Справочники.ФизическиеЛица.НайтиПоКоду("0000000001"));
  9. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Разобрался, букву попутал, спасибо!
  10. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Еще вопрос. Не правильно бежит цикл. Вместо того чтобы добавлять новую строку он ее перезаписывает.
    Кусок кода:
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл
    Док = НовДок.Ссылка;
    НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗХозрасчетный.Отбор.Регистратор.Значение = Док;
    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = '20121231000000';
    ЗХозрасчетный.Организация = Справочники.Организации.НайтиПоКоду("000000001");
    ЗХозрасчетный.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
    ЗХозрасчетный.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
    ЗХозрасчетный.СубконтоКТ.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Лист.Cells(Строка,1).Value)));
    ЗХозрасчетный.Сумма = СокрЛП(Лист.Cells(Строка,2).Value);
    НЗХозрасчетный.Записать();
    
  11. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Код:
    НовДок = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    НовДок.Дата='20121231120000';
    Бух = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Бух.Имя = "Хозрасчетный";
    Бух.Представление = "Журнал проводок (бухгалтерский учет)";
    Нал = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Нал.Имя = "Налоговый";
    Нал.Представление = "Журнал проводок (налоговый учет)";
    Взаим = НовДок.ТаблицаРегистровНакопления.Добавить();
    Взаим.Имя = "ВзаиморасчетыСРаботникамиОрганизаций";
    Взаим.Представление = "Взаиморасчеты с сотрудниками организаций";
    НовДок.Записать();
    Для Строка = 1 По ВсегоСтрок Цикл
    Док = НовДок.Ссылка;
    НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗХозрасчетный.Отбор.Регистратор.Значение = Док;
    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = '20121231000000';
    ЗХозрасчетный.Организация = Справочники.Организации.НайтиПоКоду("000000001");
    ЗХозрасчетный.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
    ЗХозрасчетный.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
    ЗХозрасчетный.СубконтоКТ.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Лист.Cells(Строка,1).Value)));
    ЗХозрасчетный.Сумма = СокрЛП(Лист.Cells(Строка,2).Value);
    НЗХозрасчетный.Записать();
    
  12. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    НЗХозрасчетный.Записать() после окончания цикла ставить.
    набор записей в таком виде не дописывается к предыдущим, а перезаписывает их, соответственно записи пишутся, но затираются следующими.
  13. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    не помогло...
    Код:
    //код...
    НовДок = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(НовДок.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
    НовДок.Дата=ТекущаяДата();
    Бух = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Бух.Имя = "Хозрасчетный";
    Бух.Представление = "Журнал проводок (бухгалтерский учет)";
    
    Нал = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Нал.Имя = "Налоговый";
    Нал.Представление = "Журнал проводок (налоговый учет)";
    
    Взаим = НовДок.ТаблицаРегистровНакопления.Добавить();
    Взаим.Имя = "ВзаиморасчетыСРаботникамиОрганизаций";
    Взаим.Представление = "Взаиморасчеты с сотрудниками организаций";
    
    НовДок.Записать();
    
    
    Для Строка = 1 По ВсегоСтрок Цикл
    
    Док = НовДок.Ссылка;
    НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗХозрасчетный.Отбор.Регистратор.Значение = Док;
    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = '20121231000000';
    ЗХозрасчетный.Организация = Справочники.Организации.НайтиПоКоду("000000001");
    ЗХозрасчетный.СчетДт = ПланыСчетов.Хозрасчетный.Вспомогательный;
    ЗХозрасчетный.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
    ЗХозрасчетный.СубконтоКТ.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(Лист.Cells(Строка,1).Value)));
    ЗХозрасчетный.Сумма = СокрЛП(Лист.Cells(Строка,2).Value);
    
    КонецЦикла;
    НЗХозрасчетный.Записать();
    НовДок.Записать();
    
  14. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    ну а создавать набор записей - перед циклом.

    набор записей - это таблица, в которую добавляются записи. если в цикле для каждой записи создавать свой набор - предыдущий не запомнится
  15. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Громаднейшее спасибо!
  16. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Занимаюсь сейчас другой обработкой.
    Нужно, чтобы с одинаковым наименованием не заносились технологические операции. Что-то не правильно написал видимо, не работает.
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл  
    Выборка = Справочники.ТехнологическиеОперации.Выбрать();
    Пока Выборка.Следующий() Цикл
    Если Выборка.Наименование <> СокрЛП(Лист.Cells(Строка,5))
    Тогда    
    Док = Справочники.ТехнологическиеОперации.СоздатьЭлемент();
    Док.Наименование = СокрЛП(Лист.Cells(Строка,5).Value);
    Если СокрЛП(Лист.Cells(Строка,5).Value) <> "" ТОГДА
    Док.Записать();
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    
    Вот сам исходный код:
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл    
    Док = Справочники.ТехнологическиеОперации.СоздатьЭлемент();
    Док.Наименование = СокрЛП(Лист.Cells(Строка,5).Value);
    Если СокрЛП(Лист.Cells(Строка,5).Value) <> "" ТОГДА
    Док.Записать();
    КонецЕсли;   
    
    Нужно добавить выборку чтобы она имеющиеся строки повторно не заносила.
  17. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    если нужно, чтобы с одинаковым наименованием не создавалось, то нужно не выборкой по справочнику бегать, а делать поиск.
    примарно так:
    Код:
    Для Строка = 1 По ВсегоСтрок Цикл
    Наименование = Лист.Cells(Строка,5).Value;
    Если Наименование=Неопределено Или СокрЛП(Наименование)="" Тогда
    Продолжить;
    КонецЕсли;
    ДокСсылка = Справочники.ТехнологическиеОперации.НайтиПоНаименованию(Наименование);
    Если ЗначениеЗаполнено(ДокСсылка) Тогда
    Продолжить;
    КонецЕсли;
    Док = Справочники.ТехнологическиеОперации.СоздатьЭлемент();
    Док.Наименование = Наименование;
    Док.Записать();
    КонецЦикла;
  18. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    В как получить доступ к заполнению табличной формы в технологической карте производства?
  19. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    название ттабличного поля - реквизит документа.

    дальше с ней работать примерно как с таблицей значений

    то есть
    ТЧ = Док.ТабличнаяЧасть;

    Строка = ТЧ.Добавить();
    Строка.КакаяТоКолонка = какоетозначение;
  20. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Код:
    Док = Справочники.ТехнологическиеКартыПроизводства.СоздатьЭлемент();
    
    По коду
    Код:
    ТЧ = Док.ТабличнаяЧасть;
    
    Не получает табличную часть.
Похожие темы
  1. OIT
    Ответов:
    1
    Просмотров:
    676
Загрузка...

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