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

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

  1. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    как понимать ваш вопрос? программно что ли?
  2. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    На уровне внешней обработке. Или где именно в синтаксис-помощнике про это почитать?
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    опишите задачу... по типу есть внешняя обработка из нее надо создать документ Корректировка записей регистров... так?

    может вот это ищите?
  4. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

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

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Именно это искал! Спасибо. Буду дальше пытаться разбираться. Хочу освоить написание обработчиков, но пока что очень тяжело.
    Проблема моя в том никак не могу понять как по синтаксис-помощнику ориентироваться. Где там информация про работу с документами находится?
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    там 3 вкладки - Содержание, Индекс, Поиск. Я пользуюсь "Индекс" - а дальше по ссылкам...

    можно еще встать на определенный текст в модуле и нажать Shift+F1 - осуществиться поиск по текущему слову, если что-то найдется, то будет выведено окно в возможными вариантами (если их нексолько) или сразу откроется описание искомой конструкции
  7. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Как зайти в Настройка состава регистров и там поставить галочки:
    взаиморасчеты с сотрудниками организаций
    журнал проводок (бухгалтерский учет)
    журнал проводок (налоговый учет)
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    нужно указать регеистры по который документ делает движения или что? вы можете нормально задать вопрос?
  9. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

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

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Т.е. в цике есть такой код:
    НоваяСтрока = ТаблицаРегистровНакопления.Добавить();
    НоваяСтрока.Имя = ЭлементСписка.Значение;
    НоваяСтрока.Представление = ЭлементСписка.Представление;
    Как понять что вносить в имя и представление? В каком регистре посмотреть?
  11. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в конфигураторе - найдите в ветке ваш документ - двойной клик по нему (откроется окно с настройками дока) - закладка "Движения" далее думаю найдете как поставить галочки напротив нужных регистров. Толкьо чтоб движения делались надо будет еще подправитьобработку проведения. Сразу предупреждаю, если движения уже делались порегистрам, то открыв форму конструктора вы сотрете код выполяющий эти движения. Так что либо вручную их прописывать в обработку, либо сохраните сначала действующую процедуру ОбработкаПроведения, создайте конструктором движения по вашему регистру, затем добавьте сохраненый ранее код обработки.

    З.Ы. почитайте книги про азы программирования (конфигурирования) на 1с

    это вообще что такое?
  12. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Разобрался с этим. Спасибо.
    Код получился:
    Код:
    НовДок = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    НовДок.Дата=ТекущаяДата();
    
    Бух = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Бух.Имя = "Хозрасчетный";
    Бух.Представление = "Журнал проводок (бухгалтерский учет)";
    
    Нал = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Нал.Имя = "Налоговый";
    Нал.Представление = "Журнал проводок (налоговый учет)";
    
    Взаим = НовДок.ТаблицаРегистровНакопления.Добавить();
    Взаим.Имя = "ВзаиморасчетыСРаботникамиОрганизаций";
    Взаим.Представление = "Взаиморасчеты с сотрудниками организаций";
    
    Интересно, чувствую что можно было упростить код и напрямую обращаться к регистра, но не работает.
    Думал так:
    Код:
    Бух = РегистрыБухгалтерии.Хозрасчетный.Выбрать();
    
    Так не работает.
  13. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.985
    Симпатии:
    398
    Баллы:
    104
    Это вообще что? Вы что этим кодом хотите сделать?
  14. nickpugachev
    Offline

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

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

    p.s. чегой-то я злой сегодня )
  15. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Это я прекрасно понимаю. Вопрос возможно не корректно сформулировал.
    Еще вопрос:
    Код:
    Попытка
    Эксель = Новый COMОбъект("Excel.Application"); // для v7 код будет: Эксель = СоздатьОбъект("Excel.Application");
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    Книга = Эксель.WorkBooks.Open("D:\ЗадолженностьПоЗП.xls");
    Лист = Книга.WorkSheets(1);
    ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
    ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
    
    Для Строка = 1 По ВсегоСтрок Цикл
    
    НовДок = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(НовДок.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
    НовДок.Дата=ТекущаяДата();
    
    Бух = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Бух.Имя = "Хозрасчетный";
    Бух.Представление = "Журнал проводок (бухгалтерский учет)";
    
    Нал = НовДок.ТаблицаРегистровБухгалтерии.Добавить();
    Нал.Имя = "Налоговый";
    Нал.Представление = "Журнал проводок (налоговый учет)";
    
    Взаим = НовДок.ТаблицаРегистровНакопления.Добавить();
    Взаим.Имя = "ВзаиморасчетыСРаботникамиОрганизаций";
    Взаим.Представление = "Взаиморасчеты с сотрудниками организаций";
    
    НовДок.Записать();
    
    Док = НовДок.Ссылка;
    НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗХозрасчетный.Отбор.Регистратор.Значение = Док;
    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Организация = "ОАО Организация";
    //Код...
    НовДок.Записать();
    КонецЦикла;
    Эксель.Application.Quit();
    
    НЕ могу понять как чтобы в Документе "Корректировака записей регистров" в табличной части "Регистры Бухгалтерии" таблица "Бухгалтерский учет" через обработчик заполнилась первая строка
  16. nickpugachev
    Offline

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

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

    то есть, чтобы получить набор записей для регистра Хозрасчетный, надо так:
    НЗХозрасчетный = Док.Движения.Хозрасчетный;
    и отборы делать не надо - все уже есть

    дальше, у записи регистра свойство Организация имеет тип СправочникСсылка.Организации (если ты типовую конфу пользуешь)
    Соответственно тебе нужно туда записывать ссылку, а не строку. 1с не строго типизированный язык, поэтому, в отличие от дельфи не обругает тебя сразу, а упадет во время работы, но не в этом случае :) - в этом случае просто ничего не сделает, а ты будешь долго искать где проблема.
  17. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

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

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

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

    т.е будет
    ЗХозрасчетный.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, ФизЛицо);

    ну и на всякий случай - в 1с есть такое понятие, как предопределенные элементы. Это ссылки на элементы справочников, планов счетов/характеристик и т.п., чтобы не искать их по наименованиям/коду, которые пользователь может и поменять.
    ссылка на вспомогательный счет будет ПланыСчетов.Хозрасчетный.Вспомогательный, на 70-й - ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда
  19. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Хорошее замечание, спасибо.
    Цикл бежит, все заполняется, но чтобы в столбце Субконто КТ проставлялось наименование сотрудника так и не смог добиться.
    Пробовал по разному:
    Код:
    ЗХозрасчетный.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, ФАМИЛИЯ ИМЯ ОТЧЕСТВО);
    
    Код:
    ФизЛицо = Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(ФАМИЛИЯ ИМЯ ОТЧЕСТВ");
    ЗХозрасчетный.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизации, ФизЛицо);
    
    Перепробовал много вариантов, так и не получилось. Справочник Физические лица заполнен и в принципе проблем не должно быть, но не работает.
    Надеюсь на вашу помощь.
    Спасибо.
  20. TopicStarter Overlay
    Vitalik85
    Offline

    Vitalik85 Опытный в 1С

    Регистрация:
    29 мар 2011
    Сообщения:
    147
    Симпатии:
    0
    Баллы:
    26
    Получается как бы 70 счет проставляется, но не корректно. При повторном ручном его проставление в строке Субконто КТ появляется возможность выбора сотрудника, а до этого ее нет.
Похожие темы
  1. OIT
    Ответов:
    1
    Просмотров:
    676
Загрузка...

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