Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите написать обработку , Обработка, которая должна заполнить реквизит          
wmatik Подменю пользователя
сообщение 08.06.11, 18:49
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

1С Предприятие 7.7(сетевая версия) - 7.70.027
Конфигурация: Производство-Услуги-Бухгалтерия для Украины(7.70.010)
Подскажите, как сформировать обработку. В общем ситуация следующая: есть документы ПриходнаяНакладнаяЗапасы и ПриходнаяНакладнаяГТД, в табличной части добавился реквизит - КодДК. Этот код вводится в справочнике КодыПоКлассификатору и В приходные накладные он подставляется автоматом из справочника ТМЦ (в этом справочнике каждому тмц присвоен код ДК). Необходимо чтобы все документы с начала года заполнились этим кодом ДК. Как это сделать вообще не представляю, обработок никогда не писала. Спасибо за помощь


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

-=VJ=- Подменю пользователя
сообщение 08.06.11, 19:30
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 402
Из: Киев
Спасибо сказали: 73 раз
Рейтинг: 0

Цитата(wmatik @ 08.06.11, 18:49) *
обработок никогда не писала. Спасибо за помощь


В стол заказов, если никогда не писали. Иначе придется тут писать её за вас.

Сама обработка на десять строк
1. Перебираем документы
2. Перебираем строки
3. Присваиваем нужное значение и сохраняем документ.


Signature
Живу на VJ.net.ua.
Спілкуюсь в ЖЖ

wmatik Подменю пользователя
сообщение 08.06.11, 19:39
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

спасибо за наводку, буду пробовать


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

wmatik Подменю пользователя
сообщение 08.06.11, 22:13
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачальнаяДата,КонечнаяДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
        Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Док.КодДК=док.Номенклатура.КодДК;
                КонецЕсли;
                ГлПользователь=Автор;
            КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Так?


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

5_kopeek Подменю пользователя
сообщение 08.06.11, 22:18
Сообщение #5

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(wmatik @ 08.06.11, 22:13) *
Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачальнаяДата,КонечнаяДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
        Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Док.КодДК=док.Номенклатура.КодДК;
                КонецЕсли;
                ГлПользователь=Автор;
            КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Так?

Похоже. Только не забудьте документ записать и провести. Помните, что после перепроведения документов могут измениться итоги по счетам и регистрам, поэтому стоит экспериментировать на копии, после чего сравнить полученные данные с рабочей базой.

wmatik Подменю пользователя
сообщение 08.06.11, 22:23
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

А какое отношение счета имеют к кодам, они ведь не связаны?
И еще вопросик, создала обработку, на форму кинула выбор даты и все, кликаю выполнить и ничего не происходит, как так?)


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

5_kopeek Подменю пользователя
сообщение 08.06.11, 22:30
Сообщение #7

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(wmatik @ 08.06.11, 22:23) *
А какое отношение счета имеют к кодам, они ведь не связаны?

Вы будете перепроводить документы, которые формируют проводки. Проводки влияют на итоги по счетам.
Цитата(wmatik @ 08.06.11, 22:23) *
И еще вопросик, создала обработку, на форму кинула выбор даты и все, кликаю выполнить и ничего не происходит, как так?)

Вы добавили в код запись и проведение документов, в которых Вы изменяете реквизит?
И в кнопке, по которой Вы кликаете, в строке формула указано Выполнить()?
А в конце Вашего кода перед КонецПроцедуры() добавьте строку
Предупреждение("Обработка завершена!");

для визуального обозначения завершения работы программы.

wmatik Подменю пользователя
сообщение 08.06.11, 22:34
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
        Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Док.КодДК=Док.ТМЦ.КодДК;
                КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    Док.Записать();
    Док.Провести();
Предупреждение("Обработка завершена!");
КонецПроцедуры


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

5_kopeek Подменю пользователя
сообщение 08.06.11, 22:37
Сообщение #9

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

И?

wmatik Подменю пользователя
сообщение 08.06.11, 22:38
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Ничего не происходит с документами) КодДК не появляется


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

5_kopeek Подменю пользователя
сообщение 08.06.11, 22:45
Сообщение #11

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Недосмотрела. Так надо:
Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
    Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
        Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Док.КодДК=Док.ТМЦ.КодДК;
                КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;
        Док.Записать();
        Док.Провести();
    КонецЕсли;
КонецЦикла;

Предупреждение("Обработка завершена!");
КонецПроцедуры

wmatik Подменю пользователя
сообщение 08.06.11, 22:56
Сообщение #12

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Когда запустила Обработку непонятно почему идет перепроведение не только приходных доков но и других


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

5_kopeek Подменю пользователя
сообщение 08.06.11, 23:09
Сообщение #13

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Выложите сообщения, котрые выдаст обработка:
Процедура Выполнить()
    Док=СоздатьОбъект("Документ");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (Док.Вид() = "ПриходнаяНакладная") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ
        (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда
            Сообщить("Обрабатываю документ "+Док.ТекущийДокумент());
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл  
                Сообщить("___ В строке "+Док.НомерСтроки+" КодДк="+Док.КодДК);
                Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                    Док.КодДК=Док.ТМЦ.КодДК;
                    Сообщить("_________ Устанавливаем в строке "+Док.НомерСтроки+" КодДк="+Док.ТМЦ.КодДК);
                КонецЕсли;
                ГлПользователь=Док.Автор;
            КонецЦикла;
            Док.Записать();
            Док.Провести();
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку()=1 Цикл
                Сообщить("___ После изменения в строке "+Док.НомерСтроки+" КодДк="+Док.КодДК);
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    Предупреждение("Обработка завершена!");  
КонецПроцедуры

Спасибо сказали: wmatik,

wmatik Подменю пользователя
сообщение 09.06.11, 8:37
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

Извините,что вчера не ответила, инет дома отключили. Я еще добавила для вывода одно поле(ПредметЗакупки).Вот такие сообщения выводит. Проверила документы, проводит. Заполняет код и его наименование и все, больше ни на что не влият. Вы говорили что со счетами может что-то случиться, где это посмотреть?


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

igmig65 Подменю пользователя
сообщение 09.06.11, 8:47
Сообщение #15

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 171 раз
Рейтинг: 144.5

Цитата
Вы говорили что со счетами может что-то случиться, где это посмотреть?

Нужно было до обработки сформировать оборотку, и после, и сравнить. Конкретно счета какие, можете посмотреть какие проводки формирует док, соответственно на эти счета и может повлиять обработка.
А вообще, если те реквизиты, что вы вставляли чисто информационные, тоесть не влияют нинакакие движения, то можно было просто записать, без Провести()

Спасибо сказали: wmatik,

wmatik Подменю пользователя
сообщение 09.06.11, 9:40
Сообщение #16

Оратор
*****
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0

ни на что не влияет, это просто код, который крепиться к тмц, чтобы потом проследить в отчете по какому коду какой план и факт

В общем убрала функцию Провести() и попробовала обработать документы. Все отлично записывает и на итоги не влияет.


Signature
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 22:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!