|
Запись СФ | ☑ | ||
---|---|---|---|---|
0
Валидатор
24.12.12
✎
17:03
|
формирую СФ на основании документа, как сделать, чтобы СФ сразу записывалась, без вопроса, что типа записать не? делаю так:
РаботаСДиалогами.ВвестиСчетФактуру(Документ, Форма, "СчетФактураВыданный"); |
|||
1
Валидатор
24.12.12
✎
17:11
|
и как в реализацию товаров и услуг в номер документа вставить свой номер, причем так, чтобы он формировал типовым механизмом: МР0000001, и плюс мой еще номер, то есть
Номер = 15; Номердокумента: МР0000000115 м? |
|||
2
Eugene_life
24.12.12
✎
17:16
|
(1) А следующий номер должен быть каким? МР000...226?
|
|||
3
sidalexsandr
24.12.12
✎
17:17
|
Вопрос выдает тебе Процедура "Вопрос". Поиши и когда найдеш
напиши Если Не СФ Тогда Вопрос(записать не?); КонецЕсли; |
|||
4
Валидатор
24.12.12
✎
17:25
|
(2) Номер - в эту переменную передаются значения из Таблицы значений, то есть их так много
|
|||
5
Serg_1960
24.12.12
✎
17:30
|
(0) Это вопрос на знание типовой конфигурации - посмотри алгоритм, не ленись, полезно будет.
(1) Никак. С "...чтобы он формировал типовым механизмом" - никак. Такой "номер" с номером автонумерации не осилить - заглючит. |
|||
6
Eugene_life
24.12.12
✎
17:31
|
(2) Тебе лучше отказаться от автоматической нумерации совсем, генерировать и присваивать свой номер. Соответственно, проверять на уникальность - тоже самому
|
|||
7
Валидатор
25.12.12
✎
10:36
|
а разве нельзя просто добавить мой номер к автоматически генерируемому?
|
|||
8
Cube
25.12.12
✎
10:37
|
(7) Нет. Или номер автоматически или вручную. Выбор за тобой.
|
|||
9
Prikum
25.12.12
✎
10:38
|
(7) Добавить то можно, вот только зачем?
|
|||
10
Валидатор
25.12.12
✎
10:41
|
ну клиент так хочет, в общем объясняю сначала, есть обработка, которая загружает данные из файла екселя в 1ску, формируя на основании загруженных данных документы и СФ, номер документа понятное дело формируется автоматически, но в екселевском файле тоже есть номер документа, который мне так же нужно загрузить в создаваемые документы в 1С. НО есть 5 документов в экселевском файле с одинаковыми номерами, то есть, если я в номер документа в 1С буду ставить номер документа из екселя, то будет ошибка, мол номера одинаковые, поэтому и нужно сделать, чтобы номер формировался сначала сам, а потом добавлялся номер моего документа из эекселя, как то так)
|
|||
11
Cube
25.12.12
✎
10:43
|
(10) Что за бред... СФ входящие или исходящие?
|
|||
12
Валидатор
25.12.12
✎
10:43
|
входящие
|
|||
13
Prikum
25.12.12
✎
10:44
|
(10) используй префикс, а в принципе в (11) сказал правильно, что за бред!
|
|||
14
Cube
25.12.12
✎
10:44
|
(12) У входящих СФ есть реквизит "ВходящийНомер" вот туда и пиши номер, указанный на СФ, а номер документа в 1С не трогай - он внутренний.
|
|||
15
Prikum
25.12.12
✎
10:44
|
(12) для входящих можно указать 2 номера, один из которых будет формироватся автоматически
|
|||
16
Валидатор
25.12.12
✎
10:47
|
Так номер входящего СФ формируется на основании номера документа, для которого мы сф делаем так ведь? или входящий номер в сф это другой реквизит? не могу в бгу найти его
|
|||
17
Cube
25.12.12
✎
10:48
|
(16) Это другой реквизит
|
|||
18
Валидатор
25.12.12
✎
10:50
|
(17) даже если так, номер документа все равно получается останется КПФ00001 к примеру? ну то есть как он автоматически был сгенерирован?
|
|||
19
Cube
25.12.12
✎
10:51
|
||||
20
Cube
25.12.12
✎
10:52
|
(18) Да, номер документа ты не трогай, пусть формируется автоматически.
|
|||
21
Валидатор
25.12.12
✎
10:54
|
(20) как клиенту объяснить, что в номер документа не нужно добавлять его номер документа(из екселевского файла)?)
|
|||
22
Cube
25.12.12
✎
10:59
|
(21) А что тут объяснять? Задай им вопрос - ЗАЧЕМ? Они же в код контрагента не пихают ИНН, а могли бы, с таким подходом-то...
|
|||
23
Валидатор
25.12.12
✎
11:02
|
угу, тогда еще вопрос: у меня в экселевском файле:
НомерДокумента Номенклатура Цена и т.д. 1 Гвоздь 15 ---- 1 Орех 20 1 молоко 10 2 самолет 55 2 вертолет 50 и так далее, так вот, когда номер документа один и тот же, то есть 1 к примеру, для него создается 1 документ, и в Тч этого документа пихаются 3 соответствующие номенклатуры, для номера документа 2 свой документ и так далее. Как открыть созданные документы после того как они полностью заполнятся? потому что сейчас они просто мерцают заполняясь, и в итоге открывается несколько документов, в которых по 1-2 записи, вместо 20 к примеру, но когда я открываю те же документы из Операции-Документы-Реализация, то там в ТЧ имеется нужное количество номенклатур |
|||
24
Cube
25.12.12
✎
11:05
|
(23) Я не знаю, чего ты там наворотил в коде, что у тебя всё мерцает (новый год что ли?)), но я бы формировал документы, не показывая их пользователю до окончания работы обработки, а по окончании работы открыл (если требуется).
|
|||
25
Валидатор
25.12.12
✎
11:07
|
(24) вот если все документы создаются в цикле, как мне потом каждый из документов, что были сформированы моей обработкой открыть?
|
|||
26
Валидатор
25.12.12
✎
11:10
|
то есть открытие всех документов за дату, в которую они формировались или как?
|
|||
27
Cube
25.12.12
✎
11:10
|
(25) Запомнить ссылки на документы (или вообще сами объекты) в массиве, а потом его перебрать?
|
|||
28
Валидатор
25.12.12
✎
11:11
|
Для каждого строчка из ТаблицаЗначений Цикл
строчка.НомерДокумента = СтрЗаменить(строчка.НомерДокумента, Символы.НПП, ""); Если строчка.НомерДокумента = СтарыйНомерДокумента Тогда Если ПоНаименованиюТов = Истина Тогда Если Не ЗначениеЗаполнено(НаименованиеТовара) Тогда Сообщить("поиск по наименованию товара не возможен, укажите на вкладке <Настройка форматов> колонку для загрузки наименований товаров"); Возврат; КонецЕсли; НоменклатураПоискПоНаименованию = Справочники.Номенклатура.НайтиПоНаименованию(строчка.НаименованиеНоменклатуры); Если НоменклатураПоискПоНаименованию = Справочники.Номенклатура.ПустаяСсылка() Тогда Если РазрешитьСоздание = Истина Тогда НоменклатураПоискПоНаименованию = СоздатьНоменклатуру(строчка.КодНоменклатуры, строчка.НаименованиеНоменклатуры, ГруппаТоваровНов); НоменклатураПоискПоНаименованию = НоменклатураПоискПоНаименованию.Ссылка; КонецЕсли; КонецЕсли; НоваяСтрока = Документ.Товары.Добавить(); НоваяСтрока.Номенклатура = НоменклатураПоискПоНаименованию; НоваяСтрока.Количество = строчка.Количество; НоваяСтрока.Цена = строчка.Цена; НоваяСтрока.СтавкаНДС = строчка.СтавкаНДС; НоваяСтрока.Сумма = строчка.Сумма; НоваяСтрока.СуммаНДС = строчка.СуммаНДС; ИначеЕсли ПоНаименованиюТов = Ложь Тогда Если Не ЗначениеЗаполнено(КодТовара) Тогда Сообщить("поиск по коду товара не возможен, укажите на вкладке <Настройка форматов> колонку для загрузки кода товар"); Возврат; КонецЕсли; строчка.КодНоменклатуры = СтрЗаменить(строчка.КодНоменклатуры, Символы.НПП, ""); НоменклатураПоискПоКоду = Справочники.Номенклатура.НайтиПоКоду(строчка.КодНоменклатуры); Если НоменклатураПоискПоКоду = Справочники.Номенклатура.ПустаяСсылка() Тогда Если РазрешитьСоздание = Истина Тогда НоменклатураПоискПоКоду = СоздатьНоменклатуру(строчка.КодНоменклатуры, строчка.НаименованиеНоменклатуры, ГруппаТоваровНов); НоменклатураПоискПоКоду = НоменклатураПоискПоКоду.Ссылка; КонецЕсли; КонецЕсли; НоваяСтрока = Документ.Товары.Добавить(); НоваяСтрока.Номенклатура = НоменклатураПоискПоКоду; НоваяСтрока.Количество = строчка.Количество; НоваяСтрока.Цена = строчка.Цена; НоваяСтрока.СтавкаНДС = строчка.СтавкаНДС; НоваяСтрока.Сумма = строчка.Сумма; НоваяСтрока.СуммаНДС = строчка.СуммаНДС; КонецЕсли; Для каждого стр ИЗ Документ.Товары Цикл ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(стр, Документ); СчетаУчета = БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Организация, Стр.Номенклатура, выбСклад); ЭтоКомиссия = (выбДоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером); МетаданныеДока = Документ.Метаданные(); ЗаполнитьСчета(Стр, "Товары", СчетаУчета, Истина, ЭтоКомиссия, МетаданныеДока); КонецЦикла; Попытка Документ.Записать(); Форма = Документ.ПолучитьФорму(); ВвестиСчетФактуру(Документ, Форма, "СчетФактураВыданный"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе Документ = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); СтарыйНомерДокумента = строчка.НомерДокумента; Документ.Комментарий = "Загружено из Excel, номер документа" + " " + строчка.НомерДокумента; Документ.Дата = ВыбДата; Документ.Организация = Организация; Документ.Контрагент = выбКонтрагент; СтруктураРеквизитовДокумента = Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(Документ); Документ.ДоговорКонтрагента = ВыбДоговор; Документ.ТипЦен = ВыбДоговор.ТипЦен.Наименование; Документ.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически; Документ.ВалютаДокумента = ВыбДоговор.ВалютаВзаиморасчетов.Наименование; Документ.Склад = ВыбСклад; Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, Документ.ВалютаДокумента, ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета), ВыбДата); Если ЭлементыФормы.УчитыватьНДС.Значение = Истина Тогда Документ.УчитыватьНДС = Истина; КонецЕсли; Если ЭлементыФормы.СуммаВключаетНДС.Значение = Истина Тогда Документ.СуммаВключаетНДС = Истина; КонецЕсли; Если ПоНаименованиюТов = Истина Тогда Если Не ЗначениеЗаполнено(НаименованиеТовара) Тогда Сообщить("поиск по наименованию товара не возможен, укажите на вкладке <Настройка форматов> колонку для загрузки наименований товаров"); Возврат; КонецЕсли; НоменклатураПоискПоНаименованию = Справочники.Номенклатура.НайтиПоНаименованию(строчка.НаименованиеНоменклатуры); Если НоменклатураПоискПоНаименованию = Справочники.Номенклатура.ПустаяСсылка() Тогда Если РазрешитьСоздание = Истина Тогда НоменклатураПоискПоНаименованию = СоздатьНоменклатуру(строчка.КодНоменклатуры, строчка.НаименованиеНоменклатуры, ГруппаТоваровНов); НоменклатураПоискПоНаименованию = НоменклатураПоискПоНаименованию.Ссылка; КонецЕсли; КонецЕсли; НоваяСтрока = Документ.Товары.Добавить(); НоваяСтрока.Номенклатура = НоменклатураПоискПоНаименованию; НоваяСтрока.Количество = строчка.Количество; НоваяСтрока.Цена = строчка.Цена; НоваяСтрока.СтавкаНДС = строчка.СтавкаНДС; НоваяСтрока.Сумма = строчка.Сумма; НоваяСтрока.СуммаНДС = строчка.СуммаНДС; ИначеЕсли ПоНаименованиюТов = Ложь Тогда Если Не ЗначениеЗаполнено(КодТовара) Тогда Сообщить("поиск по коду товара не возможен, укажите на вкладке <Настройка форматов> колонку для загрузки кода товар"); Возврат; КонецЕсли; строчка.КодНоменклатуры = СтрЗаменить(строчка.КодНоменклатуры, Символы.НПП, ""); НоменклатураПоискПоКоду = Справочники.Номенклатура.НайтиПоКоду(строчка.КодНоменклатуры); Если НоменклатураПоискПоКоду = Справочники.Номенклатура.ПустаяСсылка() Тогда Если РазрешитьСоздание = Истина Тогда НоменклатураПоискПоКоду = СоздатьНоменклатуру(строчка.КодНоменклатуры, строчка.НаименованиеНоменклатуры, ГруппаТоваровНов); НоменклатураПоискПоКоду = НоменклатураПоискПоКоду.Ссылка; КонецЕсли; КонецЕсли; НоваяСтрока = Документ.Товары.Добавить(); НоваяСтрока.Номенклатура = НоменклатураПоискПоКоду; НоваяСтрока.Количество = строчка.Количество; НоваяСтрока.Цена = строчка.Цена; НоваяСтрока.СтавкаНДС = строчка.СтавкаНДС; НоваяСтрока.Сумма = строчка.Сумма; НоваяСтрока.СуммаНДС = строчка.СуммаНДС; КонецЕсли; КонецЕсли; Для каждого стр ИЗ Документ.Товары Цикл ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(стр, Документ); СчетаУчета = БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Организация, Стр.Номенклатура, выбСклад); ЭтоКомиссия = (выбДоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером); МетаданныеДока = Документ.Метаданные(); ЗаполнитьСчета(Стр, "Товары", СчетаУчета, Истина, ЭтоКомиссия, МетаданныеДока); КонецЦикла; Попытка Документ.Записать(); Форма = Документ.ПолучитьФорму(); ВвестиСчетФактуру(Документ, Форма, "СчетФактураВыданный"); //ОткрытьЗначение(Документ.Ссылка); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; вот процедура создания документов |
|||
29
Валидатор
25.12.12
✎
11:12
|
документы записываются в переменную Документ, а дальше как?
|
|||
30
Cube
25.12.12
✎
11:17
|
(29) Всё не читал, но, примерно, так:
МассивДокументов = Новый Массив; Для каждого строчка из ТаблицаЗначений Цикл ... Попытка Документ.Записать(); Форма = Документ.ПолучитьФорму(); ВвестиСчетФактуру(Документ, Форма, "СчетФактураВыданный"); МассивДокументов.Добавить(Документ.Ссылка); //ОткрытьЗначение(Документ.Ссылка); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; Для Каждого ТекДокумент Из МассивДокументов Цикл ОткрытьЗначение(ТекДокумент); КонецЦикла; |
|||
31
Валидатор
25.12.12
✎
11:26
|
(30) но у меня может заполняться ТЧ документа 2мя номенклатурами, документ запишется, потом создастся другой документ, заполнится так же, потом найдется номенклатура, которую нужно вставить опять в первый документ, то будут открываться куча документов, в которые потом добавлялись данные
|
|||
32
Cube
25.12.12
✎
11:29
|
(31) А что, сам думать вообще не хочешь? Ну возьми вместо массива таблицу значений, потом свернешь её или проверяй, добавлял ты в массив такой документ или нет...
|
|||
33
Валидатор
25.12.12
✎
11:29
|
сделал просто проверку и все, вроде работает, спс
|
|||
34
Валидатор
25.12.12
✎
11:41
|
(32) только когда срабатывает ОткрытьЗначение, вылетает окошко с надписью Номенклатура, нажимаем ок, и все дальше открывается уже нормально, вот как избавиться от этого окошка?
|
|||
35
Валидатор
25.12.12
✎
12:11
|
все, разобрался, ошибка была в синтаксисе)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |