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

Хранилище

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

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



История благодарностей участнику volodya1122 ::: Спасибо сказали: 115 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
28.10.20, 13:54 Как запустить выполнение процедуры в отчете из документа РасходнаяНакладная? в 1С 7.70.003 торговля склад для Украины?
ZUBR @ Вчера, 0:30 * ,

У Вас что-то очень много нестандартных хотелок. Может лучше сделать как в стандартных отчетах реализовано (например Отчет По Партиях товара, или Отчет Продажи). Вверху в сформированном отчете есть кнопки "Оновить" Настроить". Суть тут такая: Сформировали отчет. Потом в каком-то документе поменяли данные, записали документ. Потом просто нажать "Оновить" и отчет перерисуется (с теми же параметрами которые пользователь выбрал для отчета). (сформированный отчет должен быть в Режиме ТолькоПросмотр(1)
ZUBR,
18.09.20, 8:59 как ПрочитатьJSON(Чтение) массив объектов (выборку запроса)
svetas_l @ Сегодня, 9:36 * ,

Может это поможет. Там я какраз делал чтение данных JSON
https://pro1c.org.ua/topic/post-zapros-do-s...atkovojy-61187/
svetas_l,
19.08.20, 8:49 Как использовать один и тот же программный блок с небольшими изменениями несколько раз? 1с 7.7 конф 7.7.00
ZUBR @ Сегодня, 1:49 * ,
Зрозуміліше не стало від цього пояснення. Пропробую здогадатися.
І так і вас на формі обробки (чи де саме використовуєте даний код) є реквізити Имя_, Телефон, АдресаОбласть, АдресаНаселенийПункт, АдресаВулиця.
В залежності від нажатої кнопки потрібно зробити три різних пошуки.
1. по реквізиту форми Имя_
2. по реквізиту форми Телефон
3. одночасно по співпадінню зразу трьох реквізитів АдресаОбласть, АдресаНаселенийПункт, АдресаВулиця
Тоді потрібно ось так прописати

Если НомерВызова=1 тогда
РеквизитДокумента=Расх.Имя;
РеквизитФормы=Имя_;
ИначеЕсли НомерВызова=2 тогда
РеквизитДокумента=Расх.Телефон;
РеквизитФормы=Телефон_;
ИначеЕсли НомерВызова=3 тогда
РеквизитДокумента=Расх.АдресОбл+Расх.НасПункт+Расх.АдресВул;
РеквизитФормы=АдресаОбласть+АдресаНаселенийПункт+АдресаВулиця;
КонецЕсли;

Если ((Найти(РеквизитДокумента,РеквизитФормы)>0)и(Расх.ПометкаУдаления()=0)) Тогда  // замінити замість Вашої умови
// РеквизитДокумента, РеквизитФормы придумані довільні
// відповідно у Вашому докумеенті РасходнаяНакладная повинні бути ці реквізити (або вони називаються по іншому) Телефон, Имя, АдресОбл, НасПункт , АдресВул
// або можливо це реквізити контрагента який є на формі документа. Поді відповідно буде Расх.Контрагент.АдресОбл , ..........
// можливо для рексвізитів в даному коді потрібно буде застосувати СокрЛП

ZUBR,
18.08.20, 9:28 Как использовать один и тот же программный блок с небольшими изменениями несколько раз? 1с 7.7 конф 7.7.00
Цитата(ZUBR @ 16.08.20, 18:28) *
Или, хотя бы, как сделать так, чтобы таблица значений и другие созданные объекты в одной процедуре, были видны в других процедурах?

Це робиться досить просто.
в самому верху модуля (до всіх процедур) робиться обявлення всіх реквізитів які повинні бути доступні у всіх процедурах і функціях даного модуля:
Перем: ТЗ, МояПерем1, МояПерем2;
ZUBR,
17.08.20, 8:59 Как использовать один и тот же программный блок с небольшими изменениями несколько раз? 1с 7.7 конф 7.7.00
Я так зрозумів, що ця процедура визивається різними кнопками. Тому щоби знати якою кнопкою визвана процедура на кожній кнопці визиваємо приблизно так:
ПоискПТФ(1) -на першій кнопці
ПоискПТФ(2) - на другій кнопці
......


В самому модулі навзву процедури пишемо так;
ПоискПТФ(НомерВызова)

І в тексті процедури, перед Вашою умовою пишем
Если НомерВызова=1 тогда
РеквизитСправочника=Расх.Имя;
РеквизитФормы=Имя_;
ИначеЕсли НомерВызова=2 тогда
РеквизитСправочника=Расх.Телефон;
РеквизитФормы=Телефон_;
Иначе..............
..........
КонецЕсли;

Если ((Найти(РеквизитСправочника,РеквизитФорми)>0)и(Расх.ПометкаУдаления()=0)) Тогда  // замінити замість Вашої умови
ZUBR,
11.06.20, 11:13 сравнить много значений
Sharzem @ Сегодня, 9:59 * ,
Спеціально для мене заморочились? Звичайно це набагато краще. (оптимізовувати код можна до бескінечності). але і буковок набагато більше писати потрібно було,
Sharzem,
10.06.20, 14:20 сравнить много значений
Вставлю и свои 5 копеек.
Я так проверяю в табличной части документа на дубли контрагентов. Легко можно переделать на проверку на дубли в таблице значений или списке значений. Тут отработает быстрее чем цикл в цикле
   сз=СоздатьОбъект("СписокЗначений");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
        зн=Контрагент.Код;
        поз=сз.НайтиЗначение(зн);
        Если поз<>0 Тогда
            СтараСтрічка="";
            тмп=сз.ПолучитьЗначение(поз,СтараСтрічка);
            сообщить("Однаковий Контрагент: "+Контрагент+" в рядках: "+СтараСтрічка+" і "+НомерСтроки,"!");
        КонецЕсли;
        сз.ДобавитьЗначение(зн,""+НомерСтроки);
    КонецЦикла;
4andriy,
08.06.20, 8:03 не получается загрузить табличную часть документа в табличную часть на форме обработки
htggth @ Сегодня, 4:13 * ,
А так переделать концовку?
Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();
РабочееМестоСТО.Счет.Загрузить(Результат.Счет);
htggth,
29.05.20, 11:53 Управление формой из другой формы
4andriy @ Сегодня, 12:27 * ,

Добре, По тій схемі як Ви написали не спрацює. Потрібно через так зване "Ложное открытие" .
В мене так працює груповий друк документу.
Отже
1. в журналі де йде створення документу написати:
    СЗ=СоздатьОбъект("СписокЗначений");
    СЗ.Установить("ВыполнитьПечать",1); // змінну можете назвати так як забажаєте
ОткрытьФорму(Док,СЗ);


2. В самому документі в ПриОткрітии() в самому цінці процедури;
        _Параметр=Форма.Параметр;
    Если ТипЗначенияСтр(_Параметр)="СписокЗначений" Тогда
        Если _Параметр.Получить("ВыполнитьПечать")=1 Тогда
    //        Печать1(1,1);        
//Записать(); Провести();;  // по вкусу добавити      
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;
4andriy,
29.05.20, 8:00 Управление формой из другой формы
4andriy @ Вчера, 22:11 * ,

А зачем вообще открывать форму документа, если програмно создается документ и програмно записываются все нужные реквизиты в нем?4andriy @ Вчера, 22:11 * ,
anatol1c,
27.05.20, 9:27 Как правильно сравнивать два строковых реквизита? 1с 7.7 конф 7.7.00
Невелике пояснення до відповіді denis84.
Чому використовується СокрЛП. Тому, що для текстового поля, його значення завжди займає всі символи відведені для нього. Якшо вказали наприклад 100 символів, то незалежно від того скільки заповнили, строка для 1С буже виглядати так (наприклад Адреса: "м. Київ, вул Банківська __________________________ " - тобто допониться пробілами до 100 символів)

П.с., не по темі. Бачу ви всі повідомлення пишети вночі, А спите коли, вдень? При такій великій нагрузці можна скоро "вигоріти" на роботі
ZUBR,
26.05.20, 8:04 Как программно выбрать и изменить один документ 1с 7.7 конф 7.7.00
ZUBR @ Вчера, 23:33 * ,
Не ПолучитьДокумент а Расх.НайтиДокумент(СсылкаРасх);
ZUBR,
20.05.20, 8:27 поиск в строке
4andriy @ Вчера, 23:18 * ,

У Вас неправильное использование фунции "Найти"

Функция "Найти" возвращает позицию первого вхождения в строку поиска заданной подстроки.

Если не находит - возвращает число 0.
Если находит то возвращает номер первого найденного символа (это может быть как 1 так и 2 и 7 и 25...., а не всегда 1 как вы написали)
4andriy,
16.05.20, 7:56 Как сделать реквизит видимым только в одном слое расходной накладной? 1с 7.7 конф 7.7.00
Як я зрозумів, потрібно при різних наборах прав керувати видимістю деяких реквізитів на формі.
В доному випадку небачу красивого рішення. Можу запропонувати два варіанти
1. Аналізувати яка закладка відкрита. І якщо відкрита закладка де є Ваш реквізит тільки тоді керувати її видимістю (назва закладки знаходиться в реквізиті Значение).
2. Замість керувати видимістю, керуйте Доступністю реквізитів (реквізит буде видно на формі, але небуде доступний для натискання/вибору). В даному випадку вже непотрібно аналізувати яка закладка відкрита.
ZUBR,
14.05.20, 14:01 Как программно очистить поле на форме РасходнойНакладной? в 1С 7.70.003 торговля склад для Украины?

ZUBR @ Сегодня, 14:00 * ,
Програмно реквизит любого типа банально чистится. Типа: МойРеквизит="";
ZUBR,
13.05.20, 12:02 Файлы хранения конфигурации 1С
Цитата(Maxymoff @ 13.05.20, 12:07) *
Спасибо, про объединение конфигураций почитаю, я так понимаю это что-то вроде обработки, которая сравнит одну конфигурацию с другой и даст возможность добавить отличия одной в другую.Если не затруднит, где почитать? Заранее спасибо!

Это внутренняя обработка (внутри конфигурации). В конфигураторе в меню выбрать Конфигурация- Обеденение конфигураций...
Откроется меню для вибора файло из которого хотите загрузить конфигурацию. Виберете файл 1cv7.md из своей копии где делали изменения. Система промнализирует различия между двумя конфигурациями и покажет различия. Потом просто нажать обеденить (все отметки оставить по умолчанию)
Maxymoff,
11.05.20, 20:39 Как создать ссылку в документе не другой документ 1с 7.7 конф 7.7.003
ZUBR @ Сегодня, 13:35 * ,

1. Чтото сильно намудрили с этими документами..... я до конца так и не понял. Поясню так как понял.
2. В документе акт нужно создать реквизит (СсылкаНаДокументРасхНакл) с типом Документ.РасходнаяНакладная
3. в документе Акт после Расх.Записать(); Написать СсылкаНаДокументРасхНакл=Расх.ТекущийДокумент():- это будет ссылка в Акте на ваш созданный документ расх накуладной.
4. Для ссылки На акт из расходной накладной; Расх.СсылкаНаАктПриема = ТекущийДокумент(); (соответственно реквизит в расходной накладной должен быть типа Документ.АктПрийома).
5. Ссылка на документ Расходная накладная, возможна только после его записи (после строки Расх.Записать()wink.gif. Соответственно и обратное, передавать ссылку на документ Акт в расходную накладную нужно после записи акта (написать Записать(); перед передачей ссылки на акт)
ZUBR,
07.05.20, 11:59 Как сделать дополнительную вкладку в документе? 1с 7.7 конф 7.7.00
Ну так в документе у вас уже все готовое есть просто нужно посмотреть как реализовано.
1. Переключение закладок : Процедура ПриВыбореЗакладки(Номер,Значение)
2. Установка закладок в ПриОткрытии уснанавливается визуальное отображение закладок
Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Основной","Основна");
    Форма.Закладки.ДобавитьЗначение("Довереность","Довіреність");
    Форма.ИспользоватьСлой("Основной, Совместный",2);
ZUBR,
06.05.20, 7:46 Ошибка метода НайтиПоРеквизиту 1с 7.7 конф 7.7.00
ZUBR @ Сегодня, 1:10 * ,
и Мистер.ВыбратьЭлементы(); в даном случае не нужно
ZUBR,
05.05.20, 15:37 Печать второй пустой страницы таблицы.
1. На двух компах разные принтера, наверное потому на одном влазит, а на другом нет.
2. В макете печатной формы в подвале есть пустые строки - в них ничего не выводится, но они участвуют в формировании печатной формы.
3. Может быть в макете печатной формы ниже подвала еще пунктирная линия разделения страниц. тогда эти строки в макете тоже нужно удалить.
4. свой вариант
Talkman,
04.05.20, 8:28 Не найден файл печатной формы 1С 7.70.003 торговля склад для Украины?
ZUBR @ Вчера, 17:31 * ,
і чим він не подобається. Це звичайне рішення, в багатьох місцях його використовують. Для користувача взагалі ніяких відмінностей небуде.

інший вихід- таблицю значень помістити прямо на форму
ZUBR,
03.05.20, 12:04 Не найден файл печатной формы 1С 7.70.003 торговля склад для Украины?
Цитата(ZUBR @ 03.05.20, 2:04) *
ZUBR @ Вчера, 21:26 * ,
Пришел к выводу, что ошибки нет, просто, когда запускается процедура не с кнопки, а с поля ввода, программа ищет таблицу в виде файла. И не находит. Можно ли обойти эту проблему?

Для виклику друку із поля вводу потрібно робити через Ложное закрытие. Здається я вже Вам раз давав як виглядає це ложне закриття.
Нагадаю:
Перем  МожноЗакрыть;

Процедура ПриОткрытии()
МожноЗакрыть=1;
КонецПроцедуры

Процедура ПечатьИзПоляВвода() // цю процедуру вішаємо на поле вводу
МожноЗакрыть = 0;
Форма.Закрыть(0);
КонецПроцедуры

    Процедура ПриЗакрытии()
    Если МожноЗакрыть = 0 Тогда
        МожноЗакрыть = 1;
        Сформувати();  // ця процедура, яку потрібно виконатити
        СтатусВозврата(0); // відмінити закриття форми
        Возврат; // протрібно якщо нижче в цій процедурі є ще якийсь код, і не потрібно щоб він виконувався
    КонецЕсли;
КонецПроцедуры


Якшо у вас на цій формі вже використовується ложне закриття для інших цілей, то використовуйте разні значення для змінної МожноЗакрыть для різних цілей, і в ПриЗакритии просто аналізуючи яке його значення виконувати потрібні дії
ZUBR,
28.04.20, 8:36 Не удается реквизит сделать периодическим 1с 7.7 конф 7.7.003
ZUBR @ Вчера, 23:00 * ,
Наскільки я зрозумів в довіднику Номенклатура реквізит КЗП записується тільки вручну. Ніякими документами він не міняється і небуде мінятись документами.
Тоді процес спрощується, Але роботи всеодно буде потрібно багато.
1. В довіднику поставити признак ПеріодичнийРеквізит. ИзменениеДокументом не ставити.
2. Зберегти конфігурацію і зайти в Предприятие. Перше значення періодичного реквізита повинно встановитись автоматично на дату наприклад 1 січня 1980 року. Це добре. (перевірити: права кнопка на номенклатурі-> Історія реквізиту). Якщо так поставилсь тоді все добре.
3. В довіднику контрагенти в процедурі ПриОткрытии прописати це (якщо його там немає);
        СохранениеПериодическихРеквизитов(2, "*");
    ИспользоватьДату(ТекущаяДата()); // періодичні реквізити будут завжди записуватись на сьогодні
//або ИспользоватьДату(РабочаяДата());// періодичні реквізити будуть записуватись на робочу дату (робочу дату можна міняти в (сервіс-Параметри-Общие)

При цьому 1С небуде задавати додаткових питань на яку дату записувати реквізити.
4. Тут саме цікаве. Всюди (в документах, в звітах, в макетах (печатних формах)), де використовується ваш реквізит КЗП потрібно замінити
Наприклад :
знач=Спр.КЗП: // було так
знач=Спр.КЗП.Получить(НужнаяДата): // змініти на це

ZUBR,
27.04.20, 17:32 Не удается реквизит сделать периодическим 1с 7.7 конф 7.7.003
1. що означає відмітка "Изменяется документами"- Це означає що значення періодичного реквізиту справочника можна міняти тільки документом (в ОбработкаПроведения() ). Коди документ помічається на видалення або робиться непроведеним, то автоматично значення цього реквізиту пропадає (яке привязане до даного документа)
2. Якшо ще поставити "Ручне Изменение" тоді значення періодичного реквізиту можна міняти з любого місця прогами. Але при видаленні документа воно автоматично не пропаде.
Для установки значення документом слід писати так:
 УстановитьРеквизитСправочника(Спр.ТекущийЭлемент(),"НазваниеПереодическогоРеквизита","Запишем тут значение реквизита",ДатаДок);

Для ручного встановлення значення потрібно писати:
Спр.ТекущийЭлемент().ПерРеквизит.Установить(ТекущаяДата(),"НужноеЗ значение");


Отримати значення реквізиту
ЗначениеРеквизитаНадату=Спр.ТекущийЭлемент().ПерРеквизит.Получить(НужнаяДата)



А можна ще так:
    Спр=СоздатьОбъект("Справочник.Контрагенты");
    Спр.ИспользоватьДату(ТекущаяДата());
... СПРНайтиСправочник
Спр.ПериодическийРеквизит=""Его значение"
Спр.Записать()


Для Установить і УстановитьРеквизитСправочника Записывать справочник непотрібно (якщо міняються тільки періодичні реквізити).

Думаю щось пояснив, або ще більше запутав. Якщо є питання, то задавайте конкретніше

Ще забув добавити.
При Відмітці "ручне Изменение"в межах дня може бути тільки одне значення періодичного реквізита. Якщо їх буде декілька, то збрежеться те яке останнім змінювалось.
При "изменениеДокументом" на кожен документ буде своє значення періодичного реквізиту (хоч 100500 значень в межах одного дня) . Для отримання значення такого реквізитуможна використовувати не дату, а позицію документу
ЗначениеРеквизитаНадату=Спр.ТекущийЭлемент().ПерРеквизит.Получить(ТекДокумент)

Але є один недолік в періодичних реквізитів. Абсолютно всі періодичні реквізити всіх справочников зберігаються в одній таблиці. І якщо їх буде дуже багато, то ця таблиця дуже швидко розростеться. І ще з цього випливає, що доступ до періодичних реквізитів буде повільнішим, так як фізично 1С повинна опрацювати дві таблиці (таблицю справочника, і таблицю періодичних реквізитів- це два різних файли на диску)
ZUBR,
19.03.20, 9:28 Заполнить данные в выбранном элементе справочнике при выборе в поле ввода
4andriy @ Вчера, 23:49 * ,
Я так понял эта процедура выполняется в Справочнике.Склыды?
Если так, это неверно
Элемент.найтиЭлемент(ТекущийЭлемент());

Потому что ТекущийЭлемет у вас Склады, а пытаетесь найти в справочнике Сотрудники.
Нудно так:
Элемент.найтиЭлемент(Отв);
Элемент.Должность="склад 1";// если Должность это строка
Элемент.Должность=ТекущийЭлемент(); //Если должность это спрвочник.Склады

Хотя мне непонятно зачем вы переменной Должность присваиваете значение склада
4andriy,

4 страниц V   1 2 3 > » 
RSS Текстовая версия Сейчас: 24.11.20, 5:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!